1

我正在使用 Qt 开发一个应用程序,这是一个我完全不熟悉的框架,我试图隐藏和显示我使用设计器创建的 DockWidget。

与许多关于在 Qt 中隐藏和显示 dockwidgets 的看似相似的问题不同的是,我完全使用 Qt Designer 制作了我的小部件,所以我不知道如何链接我在这些问题的答案中找到的大部分代码。本质上,我在我的 *.cpp 文件中没有提到停靠小部件,但我在我的 .ui 文件中提到了。

如何将这个 Designer 创建的 dockwidget 合并到我的代码中以使其可见和不可见?

对不起,这样一个nooby的问题。

谢谢,埃里普

4

1 回答 1

0

Wenn 你构建你的应用程序,从你的 ui 文件qmake生成。h所以例如自动ui_dlg_about.ui翻译成a ui_dlg_about.h。通常在名为 GeneratedFiles 或类似的文件夹中。然后,您可以通过创建以下内容来创建一个可在应用程序中使用的可自定义对话框类:

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()));
}

....
于 2014-12-03T12:27:34.600 回答