目录
一、QDialog的基本概念
对话框分为模态对话框和非模态对话框。
模态对话框:打开当前对话框后,在不关闭该对话框时,无法操作其他界面。
非模态对话框:打开当前对话框后,在不关闭该对话框时,也可以操作其他界面。
二、自定义QDialog对话框
- 使用QDialog: :exec()---实现应用程序级别的模态对话框。
- 使用QDialog: : open() ---实现窗口级别的模态对话框。
- 使用 QDialog: : show()---实现非模态对话框。
1、模态对话框
QDialog BL;//定义一个变量BL
BL.setWindowTitle(tr("第一个对话框"));//设置标题文本
BL.exec();//设置为应用程序级别的模态对话框
QDialog: : open()的对话框(同下非模态对话框)
QDialog *BL1=new QDialog;//特别注意,需使用堆,而不是栈
BL1->setAttribute(Qt::WA_DeleteOnClose);//自动销毁
BL1->setWindowTitle("第二个对话框");
BL1->open();
2、非模态对话框
注意:
1、对话框创建要在堆创建
2、由于对话框的特性,可以设置对话框关闭,自动销毁对话框。
否则,程序将一闪而过并非停留在页面上
QDialog *BL2=new QDialog;//特别注意,需使用堆,而不是栈
BL2->setAttribute(Qt::WA_DeleteOnClose);//自动销毁
BL2->setWindowTitle("第三个对话框");
BL2->show();
三、标准对话框
Qt 的内置对话框大致分为以下几类:
- QColorDialog------选择颜色;
- QFileDialog------选择文件或者目录;
- QFontDialog------选择字体;
- QInputDialog------允许用户输入一个值,并将其值返回;
- QMessageBoX------模态对话框,用于显示信息、询问问题等;
- QPageSetupDialog------为打印机提供纸张相关的选项;
- QPrintDialog------打印机配置;
- QPrintPreviewDialog------打印预览;
- QProgressDialog------显示操作过程。
四、文件夹对话框
1、设置有关窗口大小
setFixedSize(800,600);//设置窗口固定大小
ui->setupUi(this);
ui->pushButton->setFixedSize(250,50);//设置按钮固定大小
ui->pushButton_2->setFixedSize(250,50);
ui->plainTextEdit->setFixedSize(300,300);
2、设置按钮“转到槽”
void Dialog::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),"./","Images (*.png *.xpm *.jpg*.jpeg)");
if (!fileName.isEmpty())
ui->plainTextEdit->appendPlainText(fileName);
}
void Dialog::on_pushButton_2_clicked()
{
QStringList files = QFileDialog::getOpenFileNames(this, "选择打开多个文件", "./","Images (*.png *.xpm *.jpg)");
for (int i = 0;i<files.count();i++)
{
// qDebug()<<files.at(i);//使用for循环,依次打印文件路径
ui->plainTextEdit->appendPlainText(files.at(i));//将打印输出到文本框内
}
}
五、总结
1、文件对话框使用,参考帮助文档。
2、getOpenFileName,getOpenFileNames参数包括以下四类,依次为:
父类对象指针,文件对话框的标题,打开文件路径,文件过滤器
3、文件过滤器写法:
"Images (*.png *.xpm *.jpg)" //单个过滤时
"Images (*.png *.xpm *.jpg);;Text (*.txt)"//多个过滤时