#include "mainwindow.h"
#include <QApplication>
#include <QtGui>
#include<QtWidgets>
class notepad:public QWidget
{
Q_OBJECT
public:
notepad(QWidget * parent = 0, Qt::WindowFlags f = 0);//g
QTextEdit *qte;
QPushButton *qpb;
QVBoxLayout *qvbl;
public slots:
void nquit();
};
notepad::notepad(QWidget * parent, Qt::WindowFlags f):QWidget(parent, f){
qte =new QTextEdit;
qpb=new QPushButton("退出");
connect(qpb,SIGNAL(clicked()),this,SLOT(nquit()));
qvbl->addWidget(qte);
qvbl->addWidget(qpb);
setLayout(qvbl);
}
void notepad::nquit(){
qApp->quit;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/*MainWindow w;
w.show();*/
notepad b;
return a.exec();
}
QWidget的构造函数是这样的:
QWidget(QWidget * parent = 0, Qt::WindowFlags f = 0)
和你自己顶一个notepad()构造函数是冲突的。因为如果你用notepad b创建一个notepad的时候,编译器不知道你具体要调用哪个构造函数,因为QWidget的构造函数里的两个参数都有默认值,如果你不给参数的话,notepad()和QWidget()都是可以得。
你可以把notepad构造函数改成:
class {
...
notepad(QWidget * parent = 0, Qt::WindowFlags f = 0);
...
}
...
notepad::notepad(QWidget * parent, Qt::WindowFlags f)
: QWidget(parent, f) {
...
}