一、对话框
界面布局
首先在ui界面,菜单栏里面创建菜单:文件和编辑
在文件菜单下,创建action: 新建
目的是为 点击新建,弹出对话框
实现对话框(自定义对话框)
在mianwindows.cpp中
首先进行信号槽连接,新建->弹出对话框
然后分别是
模态对话框:通过exec
进行阻塞,实现这种效果。内存创建在栈区中,事件结束会自动释放。
非模态对话框:通过show
进行显示,但是点击事件结束后,会一闪而过。因此要创建在堆区。为了防止内存泄漏,在点击对话框关闭按钮,要自动释放堆区空间(Qt::WA_DeleteOnClose
)。
#include "mainwindow.h" #include "./ui_mainwindow.h" #include<QDialog> #include<QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //点击新建按钮 弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){//点击新建,触发对话框 //对话框 分类:模态对话框、非模态对话框 //模态对话框(弹出后,不可以对其他窗口进行操作) 非模态对话框(弹出后,可以对其他窗口进行操作) //模态对话框创建(阻塞) QDialog dlg(this); // 放到栈上,当局部事件结束后,会自动释放 dlg.resize(200,100);//调整对话框大小 dlg.exec();//进行阻塞(进行消息循环) qDebug()<<"Model dialog pops up"; //非模态对话框创建 QDialog *dlg2 = new QDialog(this);//要放到堆上,不然由于没有阻塞,会一闪而过。 dlg2->show(); dlg2->setAttribute(Qt::WA_DeleteOnClose);//如果点击了关闭按钮,会自动释放空间(看setAttribute文档),(不然的话,用户一直点击新建,就会出现内存泄漏) qDebug()<<"Non-model dialog pops up"; }); } MainWindow::~MainWindow() { delete ui; }
二、标准对话框:消息对话框QMessageBox
首先载入头文件
#include<QMessageBox>
用QMessageBox的静态成员函数 创建对话框
/*消息对话框*/ //错误对话框 QMessageBox::critical(this,"critical","错误"); //信息对话框 QMessageBox::information(this,"info","信息"); //提问对话框(参数1:父亲, 参数2:标题, 参数3:提示内容, 参数4:按键类型, 参数5:默认关联回车按键 返回值:点击的按钮的枚举值(也可以换成int类型)) QMessageBox::StandardButton ans = QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel); if(ans==QMessageBox::Save) qDebug()<<"chose to save"; else qDebug()<<"save to cancel"; //警告对话框 QMessageBox::warning(this,"warning","警告");
三、其他标准对话框
3.1颜色对话框QColorDialog
头文件
#include<QColorDialog>
根据选择的颜色,返回Qcolor的值
//颜色对话框 QColor color = QColorDialog::getColor(QColor(255,0,0));//默认用红色打开 qDebug()<<"r="<<color.red()<<" g="<<color.green()<<" b="<<color.blue();
3.2文件对话框QFileDialog
头文件
#include<QFileDialog>
选择文件,然后获取文件路径
//文件对话框(参数1:父亲, 参数2:标题, 参数3:默认打开路径, 参数4:过滤文件格式 返回值:选取的路径) QString path = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\xuheding\\Desktop","(*.txt)"); qDebug()<<path;
3.3字体对话框QFontDialog
头文件
#include<QFontDialog>
选择字体,返回字体QFont
//字体对话框 bool flag; QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));//默认以华文彩云,36号字体打开。(具体有哪些字体,看系统带了哪些) qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"是否加粗"<<font.bold()<<"是否倾斜"<<font.italic();
3.4总结