我正在使用Qt开发一个应用程序,这是一个我根本不熟悉的框架,我正在尝试隐藏和显示我使用设计器创建的DockWidget。
与许多关于在Qt中隐藏和显示dockwidget的看似相似的问题不同,我完全使用Qt Designer制作了我的widget,所以我不知道如何链接我在这些问题的答案中找到的大部分代码。从本质上讲,我在我的 *.cpp 文件中没有提到 dockwidget,但我在我的 .ui 文件中提到了
。如何将这个设计器创建的 dockwidget 合并到我的代码中,使其可见和不可见?
对不起,这样的菜鸟问题。
谢谢埃里普
Wenn 您构建应用程序,qmake
从您的 UI 文件生成h
。例如,ui_dlg_about.ui
会自动转换为ui_dlg_about.h
。通常在文件夹中调用生成文件或类似的东西。然后,您可以创建一个可自定义的对话框类,通过创建以下内容在应用程序中使用:
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()));
}
....