【问题标题】:Show/hide QDockWidget?显示/隐藏 QDockWidget?
【发布时间】:2010-11-20 09:13:17
【问题描述】:

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

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

【问题讨论】:

    标签: qt visibility


    【解决方案1】:

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

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

    QAction * QDockWidget::toggleViewAction () const

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

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

    【讨论】:

    • 哈!杰出的。知道必须有更好的方法来做到这一点。太感谢了! :)
    • 在设计器中有什么方法可以做到这一点吗?目前我只使用void MainWindow::on_dockWindow_visibilityChanged(bool visible) { ui->actionDockWindowToggle->setChecked(visible); },然后在on_toggled() 插槽中使用setShown()。它工作得很好,只有两行代码,但如果有办法在设计器中使用toggleViewAction(),那就太好了!
    • @Timmmm Here 它说明了如何在设计师中做到这一点。不过,它不使用 QDockWidget 自己的toggleViewAction
    • 我今天遇到了这个问题,这是一个非常简单的解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2012-04-15
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多