我在编写Qt代码时遇到问题。我不知道为什么我不能将两个以上的私人成员传递给一个班级。这是代码:
在头文件(名为wind.h)中
#ifndef WIND_H
#define WIND_H
#include <QApplication>
#include <QWidget>
#include <QPushButton>
class second : public QWidget
{
public:
second();
private:
QPushButton *bout1;
QPushButton *bout2;
QPushButton *bout3;
};
#endif // WIND_H
在wind.cpp文件中
#include "wind.h"
second::second() :QWidget()
{
setFixedSize(700, 150);
bout1 = new QPushButton("button1", this);
bout2 = new QPushButton("button2", this);
bout3 = new QPushButton("button3", this);
}
而main.cpp就像
#include <QApplication>
#include "wind.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
second sec;
sec.show();
return app.exec();
}
实际上,这段代码没有编译并运行调试,调试中甚至出现了错误,但是如果我将这一行放在注释中就可以了:
//bout3 = new QPushButton("button3", this);
当我通过2个以上的私人会员时,为什么它不起作用?我怎么能解决它?
谢谢! :)
答案 0 :(得分:1)
您的代码如图所示。作为参考,这是一个单独的文件示例:
#include <QApplication>
#include <QWidget>
#include <QPushButton>
class Second : public QWidget
{
public:
Second();
private:
QPushButton *bout1;
QPushButton *bout2;
QPushButton *bout3;
};
Second::Second() : QWidget()
{
setFixedSize(700, 150);
bout1 = new QPushButton("button1", this);
bout2 = new QPushButton("button2", this);
bout3 = new QPushButton("button3", this);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Second sec;
sec.show();
return a.exec();
}
如果没有传递任何参数,则无需在初始化列表上显式列出基类构造函数。您也不需要在堆上明确分配任何内容。所以,这是一个更好的风格:
#include <QApplication>
#include <QWidget>
#include <QPushButton>
class Second : public QWidget
{
QPushButton bout1, bout2, bout3;
public:
Second();
};
Second::Second() :
bout1("button1", this),
bout2("button2", this),
bout3("button3", this)
{
setFixedSize(700, 150);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Second sec;
sec.show();
return a.exec();
}