本来看着教材的目的是写一个标准输入对话框类的,可是因为粗心,一直报错,不过也明白了一些东西,做个总结。
你想要从一个对话框弹出一个对话框,需要在要弹出的对话框中加入Q_Object,还需要加入一些头文件声明,比如我是自定义继承QDialog类,需要QDialog的声明和QWidget的声明,同时为构造函数添加参数如类似myd(QWidget* parent=0)
代码:
dialog头文件:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
#include <QGridLayout>
#include "myd.h"
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
private:
QPushButton *mybtn;
QGridLayout *myGrid;
myd *mydialog;
public slots:
void showmywin();
};
#endif // DIALOG_H
dialog源码:
#include "dialog.h"
#include "myd.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
mybtn=new QPushButton("我的按钮");
myGrid=new QGridLayout(this);
myGrid->addWidget(mybtn);
connect(mybtn,SIGNAL(clicked(bool)),this,SLOT(showmywin()));
}
void Dialog:: showmywin()
{
mydialog=new myd(this);
mydialog->show();
}
Dialog::~Dialog()
{
}
自定义的类头文件:
#ifndef MYD_H
#define MYD_H
#include <QWidget>
#include <QDialog>
class myd : public QDialog
{
Q_OBJECT
public:
myd(QWidget* parent=0);
};
#endif // MYD_H
自定义的类源码:
#include "myd.h"
#include <QDialog>
myd::myd(QWidget* parent) : QDialog(parent)
{
}
在这里我没有设定窗口的内容,所以是空的。
效果如下: