Qt 显示/隐藏QDockWidget?
我有一个dock小部件,现在我想添加一个“窗口”菜单来显示/隐藏小部件。很容易处理Qt 显示/隐藏QDockWidget?,qt,visibility,Qt,Visibility,我有一个dock小部件,现在我想添加一个“窗口”菜单来显示/隐藏小部件。很容易处理 showPropWinAct = new QAction(tr("&Properties"), this); showPropWinAct->setStatusTip(tr("Show properties window")); showPropWinAct->setCheckable(true); connect(showPropWinAct, SIGNAL(toggled(bool)),
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
)的情况下侦听此事件并正确切换操作?不创建新操作,只需从QDockWidget本身获取操作并使用它即可。它将为您处理状态:
QAction*QDockWidget::toggleViewAction()const
“返回可用于显示或关闭此dock小部件的可检查操作
操作的文本设置为dock小部件的窗口标题。
“哈!明亮的我知道必须有更好的方法来做到这一点。非常感谢!:)在designer中有什么方法可以做到这一点?目前我只使用了
void main window::on_dockWindow\u visibilityChanged(bool visible){ui->actionDockWindowToggle->setChecked(visible);}
然后在操作on_toggled()
槽中使用setShown()
。它工作得很好,只需要两行代码,但是如果有一种方法可以在设计器中使用toggleViewAction()
,那就太好了@Timmmm它说明了如何在designer中实现这一点。不过,它没有使用QDockWidget自己的切换视图操作
。我今天一直在努力解决这个问题,这是一个非常简单的解决方案,谢谢!