c++ - Qt子类化一个ui表单显示一个空白窗口

标签 c++ qt qtwidgets

我有一个 qt .ui 表单,我正在尝试使用他们网站上描述的子类化方法在程序中使用它。但是,当我运行该程序时,我只看到一个空窗口。

子类头:

#ifndef HOMEPAGE_H
#define HOMEPAGE_H
#include "ui_homepage.h"

class HomePage : public QWidget, public Ui::HomePage
{
public:
    HomePage(QMainWindow* window);
};

#endif // HOMEPAGE_H

子类cpp文件:

#include "homepage.h"

HomePage::HomePage(QMainWindow* window)
{
    setupUi(window);
}

程序文件:

#include <QApplication>
#include "homepage.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow *window = new QMainWindow();

    HomePage homepage(window);
    homepage.show();

    return app.exec();
}

最佳答案

应该是这样的:

HomePage::HomePage(QMainWindow* window) : QWidget(parent)
{
    setupUi(this);
}

您在父级上调用 setupUi

如果您要使用信号和槽,我也会添加 Q_OBJECT 宏。

class HomePage : public QWidget, public Ui::HomePage
{
    Q_OBJECT
public:
    HomePage(QMainWindow* window);
};

另外,我会在 HomePageQMainWindow 上调用 show:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow *window = new QMainWindow();

    HomePage homepage(window);
    homepage.show();
    window->show();

    return app.exec();
}

关于c++ - Qt子类化一个ui表单显示一个空白窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582186/

相关文章:

c++ - 如何在 OpenCV 中对图像进行阈值处理?

linux - 使用 linux-arm-gnueabi-g++ 编译适用于 ARM 的 QT 时出现 XLib 错误

c++ - QML 与 Qt for Embedded System 在 uclinux 上一起运行吗?

c++程序来监视目录的更改

C++ 慢,python 快? (就开发时间而言)

c++ - 在匿名实例创建中使用先前变量时重新声明错误

c++ - QT QPrintDialog打印机初始化错误如何解决?

qt - 如何覆盖 Q_Property?

qt - 在 CLion 中,Qt Console 和 Qt Widgets Executable 项目模板有什么区别