2009-08-17 18 views
5

私はドックウィジェットを持っていますが、ウィジェットを表示/非表示するための「ウィンドウ」メニューを追加したいと思います。ユーザーは、[X]ウィジェットで、showPropWinActがトグルされませんクリックしたときに問題があるQDockWidgetを表示/非表示にしますか?

showPropWinAct = new QAction(tr("&Properties"), this); 
showPropWinAct->setStatusTip(tr("Show properties window")); 
showPropWinAct->setCheckable(true); 
connect(showPropWinAct, SIGNAL(toggled(bool)), propertiesWindow, SLOT(setVisible(bool))); 

を行うのに十分簡単。このイベントを聞き、2番目のsetVisibleシグナル(おそらく、近いイベントからのものと、上記のconnectからのもの)を発射することなく、どのようにしてアクションを適切に切り替えることができますか?

答えて

21

新しいアクションを作成する代わりに、単にQDockWidget自体からアクションを取得し、それを使用します。それはあなたのための国家の世話をします:

http://qt-project.org/doc/qt-4.8/qdockwidget.html#toggleViewAction

QAction * QDockWidget::toggleViewAction() const

は「このドックのウィジェットを表示したり閉じたりするために使用することができますチェック可能なアクションを返します

アクションのテキストが設定されています。ドックウィジェットのウインドウタイトルに。 "

+1

ハァ!ブリリアント。これを行うより良い方法がなければならないことが分かっていました。どうもありがとうございます! :) – mpen

+1

デザイナーでこれを行うには?現在、私は 'void MainWindow :: on_dockWindow_visibilityChanged(bool visible){ui-> actionDockWindowToggle-> setChecked(visible);}を使用しています。 } 'と' set_town() 'アクションの' on_toggled() 'スロットの中で実行されます。それは十分に機能し、コードの2行だけですが、デザイナーで 'toggleViewAction()'を使用する方法があればうれしいでしょう! – Timmmm