文章目录
QT自定义对话框
一、自定义对话框
在一个应用程序设计中,为了实现一些特定的功能,必领设计自定义对话框。
二、自定义对话框示例
1.建立文件mydialog
2.点击项目名单击右键—>添加新文件—>选择C++ Class–>点击Choose…—>下一步—>完成
3.得到结果
4.在widget.cpp 编写,加入头文件mydialog.h
#include "widget.h"
//实现一个两个框 小框验证后弹出大框
#include <QWidget>
#include <QDialog> //基础模板 三大框架之一
#include "mydialog.h" //添加自己的头文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
#if 0 //该方法无法体现面向对象
//QWidget a;
//a.show();
//qwidget创造一个框 函数结束后就结束 不能卡住界面达不到效果
myDialog a; //创造一个框 自己定义的myDialog
a.setFixedSize(400,400); //修改创建好的框的大小
a.exec(); //模态显示 卡住界面
//用继承的方式实现myDialog 继承于QDialog
if(!a.stat) //判断a中的stat 是否用户正常点击 是不成立的就关闭
exit(0); //ok为正常结束 ×为异常结束 非正常结束程序关闭
#endif
int s = myDialog::getstat(); //调用自定义的静态类 返回一个值给s
if(!s) //如果返回的不是正常值 关闭程序
exit(0);
}
Widget::~Widget()
{
}
5.编写mydialog.h(添加需要的头文件声明对象)
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog> //继承与QDialog
#include <QLineEdit> //行编辑器
#include <QPushButton> //按钮
class myDialog : public QDialog
{
Q_OBJECT //保证可以使用信号与槽的机制
public:
myDialog();
public slots:
void ok_pushed() //ok按钮被按下发生的函数
{
stat = true; //单机下按钮后变为true 点击第一个框×不会对stat标志进行操作
close(); //变为true并关闭对话框
}
public: //实现一个静态函数
static int getstat() //getstat为类名 用类名可以直接调用该函数
{
myDialog a;
a.setFixedSize(400,400);
a.exec();
return a.stat;
}
private:
//添加自己想要的东西
QLineEdit *le;
QPushButton *pb;
int stat; //设置一个标志
};
#endif // MYDIALOG_H
6.编写 mydialog.cpp,完成基本框架
#include "mydialog.h"
#include <QVBoxLayout> //垂直布局
myDialog::myDialog()
{
le = new QLineEdit("hello");
pb = new QPushButton("ok");
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(le);
vbox->addWidget(pb);
setLayout(vbox);
stat = false; //对话框启动时的标志
connect(pb,SIGNAL(clicked(bool)),this,SLOT(ok_pushed()));//连接按钮的槽
}
7.具体编写步骤
(1).编写widget.cpp加入头文件mydialog.h
(2).编写mydialog.h 添加需要的头文件声明对象
(3).编写mydialog.cpp,完成基本框架
(4).在mydialog.h中建立标志int stat; 标志按什么结束
(5).在mydialog.h中置槽函数 获取ok按钮被按下发生的槽函数
(6).在mydialog.cpp 中设置对话框启动标志 stat = false;
(7).修改widget.cpp 程序框一执行完后做出一判断
(8).在mydialog.h实现静态函数
(9).在mydialog.cpp连接按钮的信号与槽
8.运行结果
在对话框一种输入,点击ok,弹出后续对话框.
三、总结
自定义对话框实现步骤复杂,仔细构思后,再一步一步去实现相应功能。