【发布时间】:2014-08-31 22:30:35
【问题描述】:
我有一个自定义小部件,里面有一些标准的子小部件。如果我创建一个单独的测试项目并重新定义我的自定义小部件以继承 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.cpp:
#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 上。
【问题讨论】: