4

qwidgetが表示されているかどうか、つまり、QWidgetがデスクトップの上部にあるとき、またはウィンドウの下に隠れているときを知るためのシグナルを見つけようとしています。

また、QWidgetウィンドウが最小化されたときと、復元されたとき(最小化されていないとき)のシグナルで知りたいです。次のコードを試しましたが、ウィンドウを最小化すると、ウィンドウが閉じてアプリケーションバーに表示されなくなります。

void KGLWidget::changeEvent(QEvent *event) {
        if (event->type() == QEvent::WindowStateChange) {
            if (isMinimized() || !isVisible()) {
                emit onHide();
                event->ignore();
                qDebug() << "NO SE VE";
                return;
            }
            if(isVisible()) {
                emit onShow();
                event->ignore();
                qDebug() << "SI SE VE";
                return;
            }

        }

    QWidget::changeEvent(event);
    }

また、event-> accept()を使用して、event-> ignore()を使用せず、returnを使用せずに試しました。ただし、qwidgetウィンドウは常に閉じます。

どうもありがとうございました、私は本当にあなたの時間とあなたの助けに感謝します。

前もって感謝します。

4

1 に答える 1

1

ウィンドウを閉じるということは、プログラムが終了したということですか? あなたが示したコードは、プログラムを終了させません。おそらく、シグナル onHide() と onShow() に接続するスロットでプログラムを終了させる何かをするかもしれません。

ウィジェットの表示と非表示のときに何かをしたいだけの場合は、これら 2 つのイベント ハンドラーを再実装してみてください。

void QWidget::showEvent ( QShowEvent * event )   [virtual protected]
void QWidget::hideEvent ( QHideEvent * event )   [virtual protected]
于 2012-07-18T01:43:26.567 に答える