0

私はいくつかを視覚化MainWindowするための を持っています。QPixmapの生成/変更などを処理するために、たとえばMyVisualizerでQLabelクラスをサブクラス化しました。QLabelQPixmap

MainWindow で、キーを押して QLabel を全画面表示にしたいのですが、このshowFullScreenメソッドは Windows でのみ機能するため、 を作成しQDialog、その中に myvisualizer インスタンスを移動して、 を呼び出しましQDialog::showFullScreenた。他のいくつかのアクションのための QDialog の別のキー押下リスナー。

keyPressEvent(QKeyEvent *e)サブクラス化せずにQDialogにコールバックを追加することは可能ですか?

4

2 に答える 2

0
 class KeyPressEater : public QDialog
 {
     Q_OBJECT
     ...
     KeyPressEater(Qobject paarent);
 protected:
     bool eventFilter(QObject *obj, QEvent *event);
 };
 KeyPressEater::KeyPressEater(Qobject* parent) : QDialog(parent)
{
  installEventFilter(this);
}
 bool KeyPressEater::eventFilter(QObject *obj, QEvent *event)
 {
     if (event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
         qDebug("Ate key press %d", keyEvent->key());
         return true;
     } else {
         // standard event processing
         return QObject::eventFilter(obj, event);
     }
 }
于 2013-08-13T11:30:15.320 に答える