Qt子帧将KeyEvents传递给父帧

时间:2013-09-04 05:15:58

标签: qt focus openscenegraph

我已经实现了一个基于OSGQt的模型查看器。我目前正试图通过将子QFrame中的属性更改为基于主MainWindow的查看器框架来重新定位子模型。子框架是非模态的,并且关键事件将被传递到MainWindow中基于OSG Viewer的处理程序而不是子窗口。

子窗口保持键盘焦点的适当属性是什么,并允许在QTreeWidgetItem列的基于QLineEdit的修饰符中键入新值。

Model layer positioning

1 个答案:

答案 0 :(得分:0)

我已经使用自定义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;
      }
    };

仍然欢迎更优雅/更好的解决方案。