QDialogを開くイベントフィルターがインストールされたQMainWindowがあります。 メインウィンドウは、Enterキーのキーリリースを処理します。 しかし、QDialogが開いている状態でEnterキーを押すと、メインウィンドウでもこのイベントが検出されます。QMainWindowはQDialogによって捕捉されるべきイベントを処理しています
どうしたら起こるのを防ぐことができますか? QReleaseEventとkeyPressEvent関数を再実装するために、QDialogにイベントフィルタをインストールしようとしましたが、親(現在は0)を変更していますが、何も役に立ちません...
イベントフィルタそれはQDialogが正常に動作し、キー解除するのではなく、キーを押して処理しますが、その後、私は避けるようにしようとしている他のバグを取得するようにQMainWindow ...事前に
bool Window::eventFilter(QObject *, QEvent *event) {
if (type == QEvent::KeyRelease) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
switch(keyEvent->key()) {
case Qt::Key_Enter:
// do something here
break;
default:
break;
}
}
Dialog::Dialog(unsigned int num, QWidget *parent)
: QDialog(parent), num(_num)
{
ui.setupUi(this);
ui.btnOK->setEnabled(false);
connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(accept()));
connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(reject()));
installEventFilter(this);
}
bool Dialog::eventFilter(QObject *, QEvent *event) {
return true;
}
感謝の
ここにコードを表示できますか? – lazyhammer
私はコードを追加しました。 – kakush