Qt自定义小部件不显示子小部件
Qt custom widget not showing child widgets
我有一个自定义小部件,里面有一些标准的子小部件。如果我制作一个单独的测试项目,并重新定义我的自定义小部件以继承QMainWindow,那么一切都很好。但是,如果我的自定义小部件继承了QWidget,则窗口会打开,但里面没有子小部件。
这是代码:
controls.h:
#include <QtGui>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QPushButton>
class Controls : public QWidget
{
Q_OBJECT
public:
Controls();
private slots:
void render();
private:
QWidget *frame;
QWidget *renderFrame;
QVBoxLayout *layout;
QLineEdit *rayleigh;
QLineEdit *mie;
QLineEdit *angle;
QPushButton *renderButton;
};
controls.cp:
#include "controls.h"
Controls::Controls()
{
frame = new QWidget;
layout = new QVBoxLayout(frame);
rayleigh = new QLineEdit;
mie = new QLineEdit;
angle = new QLineEdit;
renderButton = new QPushButton(tr("Render"));
layout->addWidget(rayleigh);
layout->addWidget(mie);
layout->addWidget(angle);
layout->addWidget(renderButton);
frame->setLayout(layout);
setFixedSize(200, 400);
connect(renderButton, SIGNAL(clicked()), this, SLOT(render()));
}
main.cpp:
#include <QApplication>
#include "controls.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Controls *controls = new Controls();
controls->show();
return app.exec();
}
这将打开一个具有正确尺寸但内部没有内容的窗口。
请记住,这是我使用Qt的第一天。我需要在不继承QMainWindow的情况下完成这项工作,因为以后我需要将其放在QMainWindow上。
您缺少一个顶级布局:
Controls::Controls()
{
... (yoour code)
QVBoxLayout* topLevel = new QVBoxLayout(this);
topLevel->addWidget( frame );
}
或者,如果帧没有在其他地方使用,则直接:
Controls::Controls()
{
layout = new QVBoxLayout(this);
rayleigh = new QLineEdit;
mie = new QLineEdit;
angle = new QLineEdit;
renderButton = new QPushButton(tr("Render"));
layout->addWidget(rayleigh);
layout->addWidget(mie);
layout->addWidget(angle);
layout->addWidget(renderButton);
setFixedSize(200, 400);
connect(renderButton, SIGNAL(clicked()), this, SLOT(render()));
}
请注意,当创建QLayout(使用父窗口小部件)
您需要在Controls类上设置一个布局来管理其子级大小。我建议删除你的框架小部件。
控件.cpp
Controls::Controls()
{
layout = new QVBoxLayout(this);
.
.
.
}
main.cpp
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 由于PC显示设置的更改,Qt小部件被部分剪裁
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 显示文件中具有最小给定元音数的单词
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 稍后初始化的小部件将不会显示在主窗口中
- 如何显示最小跨度树矩阵
- 一个人如何将QT(C )UI分为多个小部件子类,并使其显示与同一类中的所有窗口
- 在Qt小部件应用程序中显示cmd终端
- 应用程序最小化时单击显示桌面/最小化全部
- 尽可能大地显示所有小部件
- 无法获得固定的设置精度双精度以显示小数位
- 显示六个整数中的最小偶数和奇数,而不使用循环和数组
- 如何在显示时调整 QPlainTextEdit 小部件的大小
- QDial 设置范围从 0.00 到 10.00 到小部件显示
- 为什么在将小部件设置为中央时不显示场景
- C++ 创建小部件数组
- 使小部件显示毫秒时出现问题
- 矢量的最小值显示为 0