8

我有一个停靠小部件,现在我想添加一个“窗口”菜单来显示/隐藏小部件。很容易做

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

问题是当用户单击小部件上的 [x] 时,showPropWinAct不会切换。如何在不触发第二个 setVisible 信号的情况下侦听此事件并正确切换操作(可能来自关闭事件的信号,以及来自connect上述事件的信号)?

4

1 回答 1

31

无需创建新操作,只需从 QDockWidget 本身获取操作并使用它。它会为你处理状态:

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

QAction * QDockWidget::toggleViewAction () const

“返回可用于显示或关闭此停靠小部件的可检查操作。

操作的文本设置为停靠小部件的窗口标题。"

于 2009-08-17T20:25:07.727 回答