我已经实现了一个基于 OSGQt 的模型查看器。我目前正试图通过将子 QFrame 中的属性更改为基于 MainWindow 的查看器框架来重新定位子模型。子框架是非模态的,关键事件被传递给 MainWindow 中的基于 OSG 查看器的处理程序,而不是子窗口。
子窗口的适当属性是什么,以将键盘焦点保持在那里并允许在 QTreeWidgetItem 列的基于 QLineEdit 的修饰符中键入新值。
我已经实现了一个基于 OSGQt 的模型查看器。我目前正试图通过将子 QFrame 中的属性更改为基于 MainWindow 的查看器框架来重新定位子模型。子框架是非模态的,关键事件被传递给 MainWindow 中的基于 OSG 查看器的处理程序,而不是子窗口。
子窗口的适当属性是什么,以将键盘焦点保持在那里并允许在 QTreeWidgetItem 列的基于 QLineEdit 的修饰符中键入新值。
我已经通过使用自定义 ItemDelegate 实现了一个工作解决方案,如下所示。
class DoublePositionEditDelegate: public QStyledItemDelegate {
public:
DoublePositionEditDelegate(QObject* parent=0): QStyledItemDelegate(parent) {}
virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
QDoubleSpinBox* dspinbox = new QDoubleSpinBox(parent);
dspinbox->setMaximum(1000000.0);
dspinbox->setMinimum(-1000000.0);
dspinbox->grabKeyboard();
return dspinbox;
}
};
仍然欢迎更优雅/更好的解决方案。