QT标准对话框
QT提供了默认的五种对话框,分别为以下对话框类

其中从上到下分别为
1、文件对话框
2、颜色对话框
3、字体对话框
4、输入对话框
5、消息框
标准对话框调用方式
void Dialog::on_btnOpen_clicked()
{ //选择单个文件
QString curPath=QDir::currentPath();//获取系统当前目录
//获取应用程序的路径
QString dlgTitle="选择一个文件"; //对话框标题
QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
ui->plainTextEdit->appendPlainText(aFileName);
}
如代码所示,定义对话框的目录,标题,文件过滤器,然后使调用QFileDialog类下的getOpenFileName()函数,弹出对话框供用户选择,然后返回文件名。
其他标准对话框使用方式大同小异。
自定义对话框框架
自定义对话框创建步骤
1、使用Qt Creator 的菜单项 File->New File or Project,创建一个Application项目Qt Widgets Application,选择基类为QMainWindow。
2、使用Qt Creator 的菜单项 File->New File or Project,创建一个QT类下的Qt Designer Form Class(Qt设计师界面类),选择Dialog without buttons。类名写为QWDialogSize。
3、在qwdialogsize.ui里面,自定义你的弹窗界面,并在qwdialogsize.cpp里面,编写你的类函数。
4、在mainwindow.cpp里面,包含自定义对话框类的头文件#include “qwdialogsize.h”。
5、接下来,在mainwindow.cpp里面,就可以使用QWDialogSize类去 定义对象并调用对话框了。
举例:
创建的对话框如图所示:
一、qwdialogsize.cpp下的函数
int QWDialogSize::rowCount()
{ //用于主窗口调用获得行数的输入值
return ui->spinBoxRow->value();
}
int QWDialogSize::columnCount()
{//用于主窗口调用获得列数的输入值
return ui->spinBoxColumn->value();
}
void QWDialogSize::setRowColumn(int row, int column)
{ //初始化数据显示
ui->spinBoxRow->setValue(row);
ui->spinBoxColumn->setValue(column);
}
二、mainwindow.cpp下的对话框对象定义以及调用
//模态对话框,动态创建,用过后删除
QWDialogSize *dlgTableSize=new QWDialogSize(this);
Qt::WindowFlags flags=dlgTableSize->windowFlags();
dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);
dlgTableSize->setRowColumn(1,1);
int ret=dlgTableSize->exec () ;// 以模态方式显示对话框
if (ret==QDialog::Accepted)
{ //OK按钮被按下,获取对话框上的输入
int cols=dlgTableSize->columnCount();
int rows=dlgTableSize->rowCount();
}
delete dlgTableSize;
三、解析:在qwdialogsize.cpp中,定义了三个函数:
int QWDialogSize::rowCount() //用来获取弹窗界面上的行设置。
int QWDialogSize::columnCount() //用来获取弹窗界面上的列设置。
void QWDialogSize::setRowColumn(int row, int column) //用来设置弹窗上行列输入框的默认值。
之后在mainwindow.cpp中,
QWDialogSize *dlgTableSize=new QWDialogSize(this); //定义了一个QWDialogSize类型的对象。
dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint); //设置窗口属性
int ret=dlgTableSize->exec () ; //显示对话框并获取对话框的结果。
对话框如下图:
参考资料:http://c.biancheng.net/view/1871.html