Qt提供了一些标准对话框,全部继承自QDialog类,并增加了自己的特点。
下面都是一些简单的demo演示,实际使用再详细学习。
1.QColorDialog 颜色对话框
Dialog widget for specifying colors。在之前使用的代码,将槽函数进行修改。
void MainWindow::on_PushButton_clicked()
{
QColor c = QColorDialog::getColor(Qt::red,//设置初始颜色,默认是白色
this,//设置其父对话框
"颜色");//对话框标题
qDebug()<<"颜色:"<<c;
}
点击按钮后,会弹出如下对话框
随便选取一个颜色,点击确定,会输出如下内容
颜色: QColor(ARGB 1, 1, 1, 1)
2.QFileDialog 文件对话框
它可以让用户选取一个文件夹或文件。
void MainWindow::on_PushButton_clicked()
{
//文件对话框
QStringList file_name = QFileDialog::getOpenFileNames();
qDebug()<<"file path:"<<file_name;
}
执行效果
相应的输出为:
file path: ("F:/QT/Demo/build-demo-Desktop_Qt_5_7_0_MSVC2013_64bit-Debug/Makefile", "F:/QT/Demo/build-demo-Desktop_Qt_5_7_0_MSVC2013_64bit-Debug/Makefile.Debug", "F:/QT/Demo/build-demo-Desktop_Qt_5_7_0_MSVC2013_64bit-Debug/Makefile.Release", "F:/QT/Demo/build-demo-Desktop_Qt_5_7_0_MSVC2013_64bit-Debug/ui_mainwindow.h")
3.QFontDialog 字体窗口对话窗
提供了选择一个字体,即可获取字体void MainWindow::on_PushButton_clicked()
{
//字体对话框
bool ok;
QFont font = QFontDialog::getFont(&ok);
if(ok)
{
qDebug()<<"字体"<<font;
}
}
效果
输出:
字体 QFont( "Agency FB,22,-1,5,75,1,0,0,0,0" )
4.QInputDialog输入对话框
获取输入的文本,整型,浮点型等void MainWindow::on_PushButton_clicked()
{
//输入对话框
bool ok;
QString s = QInputDialog::getText(this,
"文字",
"输入",
QLineEdit::Normal,
"admin",
&ok);
qDebug()<<"文字输入:"<<s;
QStringList items;
items.append("item1");
items.append("item2");
QString item = QInputDialog::getItem(this,
"dialog",
"input",
items,
0,
true,
&ok);
qDebug()<<"条目输入:"<<item;
}
效果:
输出:
文字输入: "admin"
条目输入: "item1"
5.QMessageBox 消息对话框
可以向用户通知一些信息,也可以让用户执行一些选择。void MainWindow::on_PushButton_clicked()
{
//消息对话框
//问题对话框
int msg1 = QMessageBox::question(this,
"question",
"Do you like xiaomi?",
QMessageBox::Yes,
QMessageBox::No
);
if(msg1 == QMessageBox::Yes)
qDebug()<<"yes";
//消息提示对话框
int msg2 = QMessageBox::information(this,
"info",
"you like xiaomi");
//警告对话框
int msg3 = QMessageBox::warning(this,
"warning",
"xiaomi is a good company",
QMessageBox::Abort);
//错误对话框
int msg4 = QMessageBox::critical(this,
"error",
"you can not dislike xiaomi"
);
//关于对话框
QMessageBox::about(this,
"about",
"xiaomi6 is a great phone!");
}
分别的效果
6.QProgressDialog 进度对话框
对一个可能耗时较长的操作的一个进度显示对话框。
void MainWindow::on_PushButton_clicked()
{
QProgressDialog progress("进度",
"取消",
0,50000,
this);
progress.setWindowTitle("进度");
progress.setWindowModality(Qt::WindowModal);
progress.show();
for(int i=0;i<=50000;i++)
{
progress.setValue(i);
QCoreApplication::processEvents();
}
}
进行一个模拟操作。
效果
7.QErrorMessage 错误消息对话框
void MainWindow::on_PushButton_clicked()
{
//错误消息对话框
QErrorMessage *errorDialog = new QErrorMessage();
errorDialog->setWindowTitle("error dialog");
errorDialog->showMessage("error!!");
}
效果
可以看到相比QMessageBox的错误消息对话框,多出了一个提示信息
8.QWizardpage 向导对话框
它相比上面的那些对话框多了很多东西,首先QWizard是一个框架,它包含了设计向导的所有函数,可以用它来实现想要的效果。
void MainWindow::on_PushButton_clicked()
{
//向导对话框
QWizardPage *p1 = new QWizardPage();
p1->setTitle("p1");
QWizardPage *p2 = new QWizardPage();
p2->setTitle("p2");
QWizardPage *p3 = new QWizardPage();
p3->setTitle("p3");
QWizardPage *p4 = new QWizardPage();
p4->setTitle("p4");
QWizard w;
w.setWindowTitle("向导");
w.addPage(p1);
w.addPage(p2);
w.addPage(p3);
w.addPage(p4);
w.exec();
}
效果