2014-12-02 28 views
1

我正在開發一個應用程序,Qt是一個我並不熟悉的框架,我試圖隱藏和顯示使用設計器創建的DockWidget。隱藏/顯示設計器Qt 5中的DockWidgets

與許多關於在Qt中隱藏和顯示dockwidgets的看似類似的問題不同,我使用Qt Designer完成了我的小部件,所以我不知道如何鏈接我在這些問題中找到的大部分代碼「答案。基本上,我沒有提到我的* .cpp文件中的dockwidget,但是我在我的.ui文件中。

如何將此設計器創建的dockwidget合併到我的代碼中以使其可見和不可見?

對不起,這樣一個nooby問題。

感謝, erip

回答

0

德恩構建應用程序,qmake生成從您的UI文件h。因此,例如ui_dlg_about.ui會自動翻譯爲ui_dlg_about.h。通常在一個文件夾中調用GeneratedFiles或類似的東西。然後,您可以創建你沿着以下創造一些在你的應用程序中使用acutal定製對話框類:

dlg_about.h

#include "ui_dlg_about.h" 
#include <QDialog> 

class dlg_about : public QDialog, protected Ui::ui_dlg_about 
{ 
    Q_OBJECT 

    public: 
     dlg_about(QWidget* = 0); 

    public slots: 
     void toggle_dockwidget(); 
}; 

dlg_about.cpp

#include "dlg_about.h" 

dlg_about::dlg_about(QWidget* parent) : QDialog(parent) 
{ 
    setupUi(this); 

    QObject::connect(this->somebutton, SIGNAL(clicked()), this, SLOT(toggle_dockwidget())); 
} 

void dlg_about::toggle_dockwidget() 
{ 
    if(something){ 
     this->dockwidget->setVisible(true); 
    }else{ 
     this->dockwidget->setVisible(false); 
    } 
} 

您的對話也可能不是從ui_dlg_about派生的,而是作爲其成員的:

dlg_about.h

#include "ui_dlg_about.h" 
#include <QDialog> 

class dlg_about : public QDialog 
{ 
    Q_OBJECT 

    public: 
     dlg_about(QWidget* = 0); 

    public slots: 
     void toggle_dockwidget(); 

    protected: 
     Ui::ui_dlg_about ui; 
}; 

dlg_about.cpp

#include "dlg_about.h" 

dlg_about::dlg_about(QWidget* parent) : QDialog(parent) 
{ 
    setupUi(this->ui); 

    QObject::connect(this->ui.somebutton, SIGNAL(clicked()), this, SLOT(toggle_dockwidget())); 
} 

....