在 class 中创建 QWidget

Creating QWidget in a class

我正在尝试在我的 class 中创建一个 window。

我查看了文档:http://doc.qt.io/qt-5/qtwidgets-tutorials-widgets-toplevel-example.html

QApplication a(argc, argv);
QWidget window;
window.show();
return a.exec();

当代码在 main.cpp 中时,这确实显示了 window。

但我想在其他 class 中创建 window。 当我使用该行时:

QWidget window;
window.show();

它没有给我 window,程序也没有退出。

那么我们如何在自己的QT中创建一个widget呢class?

这是一个初始化和自定义的示例 QWidget

#include <QWidget>

void FileManager::initializeMyWidget()
{
    QWidget *myWidget= new QWidget();
    myWidget->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
    myWidget->setWindowFlags(windowFlags() | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
    QIcon iconMyWidget(":/Images/Images/image.png");
    myWidget->setWindowIcon(iconMyWidget);
    QHBoxLayout *mainLayout = new QHBoxLayout;
    myWidget->setLayout(mainLayout);
}

现在调用函数并显示小部件:

initializeMyWidget();
myWidget->show();

你应该像这样创建一个 Qframe class.h

class Window : public QWidget
{
    Q_OBJECT
public:
    Window(QWidget *parent = nullptr);
private:
    QLabel *createLabel(const QString &text);
};
#endif

和.cpp

#endif
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(createLabel(tr("LEVEL")), 2, 0);
    setLayout(layout);
    setWindowTitle(tr("Tetrix"));
    resize(50, 370);
}

QLabel *Window::createLabel(const QString &text)
{
    QLabel *label = new QLabel(text);
    label->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    return label;
}