QDockWidget 启动时自动隐藏

Posted

技术标签:

【中文标题】QDockWidget 启动时自动隐藏【英文标题】:QDockWidget autohide on start 【发布时间】:2013-03-27 07:47:14 【问题描述】:

我有一个 QTDesigner 对话框,其中 QDockWidget 作为主要小部件。当我将它停靠到主窗口并显示对话框时,它会自动自动隐藏,但允许我使用鼠标显示/隐藏它。我想默认保持可见。 如果我使用鼠标将其调整为大尺寸,大约是屏幕尺寸的 2/3,然后关闭对话框并稍后显示它,即使我关闭最后一个大尺寸的应用程序,它也可以正常工作。

这些是我的课:

/** created automatically by QT compiler */
class Ui_OfsIndSelAttribBase

    public:
        QWidget *dockWidgetContents;
        QVBoxLayout *verticalLayout_10;
        QGroupBox *_p_gB_Filters;
        QVBoxLayout *verticalLayout_9;
        QVBoxLayout *verticalLayout_4;
        ....

        void setupUi(QDockWidget *dockWidget)
        
            if (dockWidget->objectName().isEmpty())
                dockWidget->setObjectName(QString::fromUtf8("dockWidget"));
            dockWidget->resize(352, 789);
            dockWidget->setFloating(false);
            dockWidgetContents = new QWidget();
            dockWidgetContents->setObjectName(QString::fromUtf8("dockWidgetContents"));
            ...
        
;

我的对话类树:

class FCSDockableInputDataQt: public QDockWidget

    Q_OBJECT

    public:
        /** GetMainWindow() returns a valid QT main window */
        FCSDockableInputDataQt(Qt::DockWidgetArea do = Qt::BottomDockWidgetArea,
                               Qt::WFlags f=0) :
            QDockWidget("MyDialog", GetMainWindow(), f)
       
           ....
       
;

/** this is my dialog management class */
class OfsIndSelAttribQt : public FCSDockableInputDataQt, 
                          public Ui::OfsIndSelAttribBase

    Q_OBJECT

    OfsIndSelAttribQt() :
        FCSDockableInputDataQt(Qt::RightDockWidgetArea)
    
        setupUi(this);
        setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
        setFloating(false);
        ....
    
;

【问题讨论】:

【参考方案1】:

您想在创建窗口时隐藏 QDockWidget,然后在单击某处的按钮或类似的东西时切换显示或隐藏?在 setupUi 方法中调用 QDockWidget::hide() ,然后在某处添加一个小切换按钮,该按钮在切换时向 QDockWidget 发送信号,告诉它是显示还是隐藏。

【讨论】:

【参考方案2】:

将 QAppltion 信号 aboutToQuit() 连接到您的 dockwidget 的 SLOT 说 onQuit:

QObject::connect(QApplication(), SIGNAL(aboutToQuit()), this, SLOT(onQuit()));

SLOT 应如下所示:

void CustomDock::onQuit()

  setVisible(false);

所以。关闭您的应用程序时,停靠栏是隐藏的。如果您再次启动您的应用,QT 会将 CustomDock 状态恢复为隐藏。

【讨论】:

以上是关于QDockWidget 启动时自动隐藏的主要内容,如果未能解决你的问题,请参考以下文章

QDockWidget 隐藏标题栏

QT 隐藏qdockwidget标题栏 偏方

自动布局隐藏第一次启动的图像

使用 Phonegap Build 自动隐藏启动画面

Ubuntu左边启动器移到底部及自动隐藏

python Unity启动器指示器改变侧面和自动隐藏