2013-03-27 63 views
0

我有一個QTDesigner對話框,並帶有一個QDockWidget作爲主窗口小部件。當我停靠到主窗口並顯示對話框時,自動自動隱藏,但允許我使用鼠標顯示/隱藏它。我想默認情況下保持可見。 如果我使用鼠標將其大小調整爲大約2/3的屏幕大小,然後關閉對話框並稍後顯示,則即使我以最後一個大尺寸關閉應用程序,它也可以正常工作。QDockWidget啓動時自動隱藏

Theese是我clases:

/** 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的時候添加一個小切換按鈕,告訴QDockWidget是否顯示或隱藏。

0

連接QAppltion信號aboutToQuit()到您的dockwidget的SLOT說onQuit:

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

SLOT應該是這樣的:

void CustomDock::onQuit() 
{ 
    setVisible(false); 
} 

所以。當關閉你的應用程序時,碼頭是隱藏的。如果您再次啓動您的應用程序,QT會將CustomDock狀態恢復爲隱藏狀態。