Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 显示/隐藏QDockWidget?_Qt_Visibility - Fatal编程技术网

Qt 显示/隐藏QDockWidget?

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)),

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

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自己的
切换视图操作
。我今天一直在努力解决这个问题,这是一个非常简单的解决方案,谢谢!