本来看着教材的目的是写一个标准输入对话框类的,可是因为粗心,一直报错,不过也明白了一些东西,做个总结。
你想要从一个对话框弹出一个对话框,需要在要弹出的对话框中加入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)
{
}
在这里我没有设定窗口的内容,所以是空的。 效果如下: