所以,我有一个QT项目,它有一个QWidget类的已实现子类,我在一开始就展示了它,不再做任何事情。字面上
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyClass w;
w.show();
return a.exec();
}
例如,我想在我的应用程序中看到这个小部件的两个实例。我在谷歌上做了一个小调查,发现了QGridLayout和QLayout小部件。天真地假设我可以向它们添加项目并键入
myLayout.show()
(HTML心态),没有收到任何积极的消息,我放弃了,现在必须在这里寻求解决方案。
因此,问题来了:处理这种情况的适当方式是什么?如何正确显示两个或多个QWidget?最终,我希望我的应用程序看起来像这样:
我的小工具1
|
我的按钮1
|
我的小工具2
|
我的文本字段1
|
我的Qt版本是6.6.0,如果这很重要的话
使现代化
我的QWidget子类只是一个黑色矩形:
class MyWidget: public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {};
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.fillRect(rect(), Qt::black);
event->accept();
};
还有我的
main.cpp
文件如下所示(包括省略的部分):
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w1;
MyWidget w2;
QMainWindow myWindow;
QGridLayout myLayout;
myLayout.addWidget(&w1, 0, 0);
myLayout.addWidget(&w2, 0, 1);
myWindow.setLayout(&myLayout);
myWindow.show();
return a.exec();
}
也许需要注意的是,应用程序输出抛出以下行:
QWidget::setLayout: Attempting to set QLayout "" on QMainWindow "", which already has a layout