Windows 7 Ultimate 32ビットでQt 4.7を使用しています。メインウィンドウが最小化されているとQDockWidgetが閉じます
私のプログラムのQMainWindow
にはQDockWidget
があります。タイトルバーの最小化ボタンでメインウィンドウを最小化すると、復元後にドックウィジェットが閉じられることに気付きました。私はこのような機能のサポートを書いていませんでした!
これはどうやってこれを防止するのですか?
ありがとうございました。
Windows 7 Ultimate 32ビットでQt 4.7を使用しています。メインウィンドウが最小化されているとQDockWidgetが閉じます
私のプログラムのQMainWindow
にはQDockWidget
があります。タイトルバーの最小化ボタンでメインウィンドウを最小化すると、復元後にドックウィジェットが閉じられることに気付きました。私はこのような機能のサポートを書いていませんでした!
これはどうやってこれを防止するのですか?
ありがとうございました。
私は同じ問題に直面しました...私はStoreWindowsLayoutとRestoreWindowsLayoutというメソッドを使用してそれを取り除くことができました。
StoreWindowsLayoutは、メソッドQMainwindow :: saveState()によって返されたByteArrayの内容を保存します。
RestoreWindowsLayoutは、私がApplicationMainFrmにStoreWindowsLayoutを呼び出すことのByteArrayを復元するため、あなたの窓のレイアウト、qdockwidgetの可視性の状態のように...
ます:: ApplicationMainFrmにChangeEventのを、:: closeEventは(それはおそらく、この1あなたです)とApplicationMainFrm :: hide()の中にあります。
次に、ApplicationMainFrm :: showEventでrestoreWindowsLayoutを使用します。
私のMainFormでrestoreWindowsLayoutの使用のExemple:
void ApplicationMainFrm::showEvent(QShowEvent* pEvent)
{
QMainWindow::showEvent(pEvent);
restoreWindowsLayout();
}
はそれが役に立てば幸い!
私自身のアプリケーションを書くときにこのエラーが発生しました。 QDockWidgetにはアプリケーションのオプションがあります。 Qt Creatorを使用するQAction actionMenuでチェック可能なメニューを作成しました。次にQDockWidgetとQActionを次のように接続しました:
QObject::connect(ui->dockWidget, SIGNAL(visibilityChanged(bool)),
ui->actionMenu, SLOT(setChecked(bool)));
QObject::connect(ui->actionMenu, SIGNAL(toggled(bool)),
ui->dockWidget, SLOT(setVisible(bool)));
接続の順序は重要ではありません。そして、QDockWidgetを表示しているアプリケーションを最小限に抑えると、QDockWidgetを復元した後、QDockWidgetが閉じられ、actionMenuがチェックされなくなりました。
実際には2つの解決策があります。私の作品最初はSIGNAL(トリガー(ブール値))の代わりに、SIGNAL(切り替え(ブール値))を使用することです:
// Retrieve action from QDockWidget.
QAction *action = ui->dockWidget->toggleViewAction();
// Adjust any parameter you want.
action->setText(QString("&Menu"));
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M));
action->setStatusTip(QString("Press to show/hide menu widget."));
action->setChecked(true);
// Install action in the menu.
ui->menuOptions->addAction(action);
:
QObject::connect(ui->dockWidget, SIGNAL(visibilityChanged(bool)),
ui->actionMenu, SLOT(setChecked(bool)));
QObject::connect(ui->actionMenu, SIGNAL(triggered(bool)),
ui->dockWidget, SLOT(setVisible(bool)));
第2の解決策は、あなたがQDockWidgetから入手できるアクションを使用しています
QDockWidgetのアプリケーション終了時にSIGNAL(トグル(ブール))が原因であることがわかりました。