1、颜色选择对话框
颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框的对话框部件:
//添加头文件
#include <QColorDialog>
//getColor的3个参数分别是:设置初始颜色、父窗口、和对话框标题
QColor color = QColorDialog::getColor(Qt::red, this, "Color dialog");
qDebug()<<"color"<<color;
这里使用 QColorDialog 的静态函数 getColor () 来获取颜色,执行时弹出颜色选择对话框:
返回的是一个 QColor 类型的数据:
这四个数值分别代表:透明度(alpha)、Red、Green、Blue。它们的默认值都是 0.0~1.0,有效数字为 6 位,对于 alpha 来说,1.0 表示完全不透明,0.0 表示完全透明。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
还可以通过创建对象的方式创建颜色对话框:
QColorDialog dialog(Qt::red,this);
dialog.setOption(QColorDialog::ShowAlphaChannel);
dialog.exec();
QColor color = dialog.currentColor();
qDebug()<<"color"<<color;
效果与前面使用静态方法的一样。
二、字体对话框
字体对话框 QFontDialog 类提供了一个可以选择字体的对话框部件:
#include <QFontDialog>
//ok is a sign to mark what you chosen(OK or Calcel)
bool ok;
QFont font = QFontDialog::getFont(&ok,this);
if(ok) { //choose OK
ui->pushButton_2->setFont(font);
} else { //choose cancel
qDebug()<<"Cancel";
}
这里通过静态函数来选择字体,如果在字体对话框中单击了 OK,那么 ok=true;如果单击了 Cancel,那么 ok=false。
三、输入对话框
输入对话框 QInputDialog 类用来提供一个简单方便的对话框,从用户哪里去一个单一的数值或字符串。
//头文件
#include <QInputDialog>
bool ok;
//gain stirng
//getText()参数:指定父窗口、设置窗口标题、设置对话框中的标签的显示文本、
//输入字符串的显示模式(例如密码显示小黑点)、设置输入框中的默认字符串,按钮信息
QString string = QInputDialog::getText(this, "Input string Dialog",
"please input user name:", QLineEdit::Normal,
"admin", &ok);
if(ok) {
qDebug()<<"stirng:"<<string;
}
//gain int
int valueInt = QInputDialog::getInt(this, "Input Int Dailog",
"please input a value between -1000 and 1000",
100, -1000, 1000, 10, &ok);
if(ok) {
qDebug()<<"valueInt:"<<valueInt;
}
//gain float
double valueDouble = QInputDialog::getDouble(this, "Input Double Dialog",
"please input a value between -1000 and 1000",
0.00, -1000, 1000, 2, &ok);
if(ok) {
qDebug()<<"valueDouble:"<<valueDouble;
}
QStringList items;
items<<"item1"<<"item2";
//gain items
QString item = QInputDialog::getItem(this, "Input Item Dialog",
"please choose a item:", items, 0, true, &ok);
if(ok) {
qDebug()<<"item:"<<item;
}
显示如下:
输入后,显示结果为:
四、进度对话框
进度对话框 QProgressDialog 对一个耗时较长的操作进度提供了反馈。
#include <QProgressDialog>
QProgressDialog dialog("copy progress", "Cancel", 0, 50000, this);
dialog.setWindowTitle("Progress Dialog"); //set window title
dialog.setWindowModality(Qt::WindowModal); //set dialog modal
dialog.show();
//演示复制进度
for(int i = 0; i < 50000; ++i) {
dialog.setValue(i); //设置进度条当前值
QCoreApplication::processEvents(); //避免界面冻结
if(dialog.wasCanceled()) { //按下取消键则中断
break;
}
}
dialog.setValue(50000); //显示100%
qDebug()<<"copy finish";
效果:
五、错误信息对话框
QErrorMessage 类提供了一个显示错误信息的对话框:
#include <QErrorMessage>
QErrorMessage *dialog = new QErrorMessage(this);
dialog->setWindowTitle("Error mesage Dialog");
dialog->showMessage("This is error message.");
显示:
五、文件对话框
5.1. 选择打开一个文件
文件对话框 QFileDialog 提供了一个用户选择文件或文件夹的对话框:
#include <QFileDialog>
//getOpenFileName()函数用来获取选择的文件名,参数:指定父窗口、设置标题、默认打开目录、文件类型过滤器。
QString fileName = QFileDialog::getOpenFileName(this, "File Dialog",
"/home/daowm/", "Picture(* png * jpg)");
qDebug()<<fileName;
运行程序显示:
可以设置多个不同类别的过滤器,不同类别间使用两个分号 “;;” 隔开,例如:
QString fileName = QFileDialog::getOpenFileName(this, "File Dialog", "/home/daowm/",
"Picture(* png * jpg);;TextFile(* txt)");
5.2. 打开多个文件
可以使用 getOpenFileNames () 函数选择多个文件:
#include <QFileDialog>
QStringList fileNames = QFileDialog::getOpenFileNames(this, "File Dialog", "/home/daowm/",
"Picture(* png * jpg);;TextFile(* txt)");
qDebug()<<fileNames;
得到的 fileNames 为:
5.3. 使用 getSaveFileName () 来实现保存文件对话框
5.4. 使用 ExistingDirectory () 函数来获取一个已存在的文件夹路径
六、消息对话框
QMessageBox 类提供一个模态对话框来通知用户一些信息,或者向用户提出一个问题并获取答案。
#include <QMessageBox>
//question Dialog
int ret1 = QMessageBox::question(this, tr("Question Dialog"), tr("Do you know Qt?"),
QMessageBox::Yes,QMessageBox::No);
if(ret1 == QMessageBox::Yes){
qDebug()<<tr("Question!");
}
//Information Dialog
int ret2 = QMessageBox::information(this, tr("Information Dialog"), tr("This is Qt!"),
QMessageBox::Ok);
if(ret2 == QMessageBox::Ok){
qDebug()<<tr("Information!");
}
//Warning Dialog
int ret3 = QMessageBox::warning(this, tr("Warning Dialog"), tr("1111"),
QMessageBox::Abort);
if(ret3 == QMessageBox::Abort) {
qDebug()<<tr("Warning!");
}
//Critial Dialog
int ret4 = QMessageBox::critical(this, tr("Critial Dailog"), tr("Find a critial question!"),
QMessageBox::YesAll);
if(ret4 == QMessageBox::YesAll) {
qDebug()<<tr("Critial!");
}
//About Dialog
QMessageBox::about(this, tr("About Dialog"), tr("This is a About Dialog!"));
显示:
七、向导对话框
QWizard 类提供了一个设计向导界面的框架。
//添加头文件
#include <QWizard>
//在窗口的头文件中添加函数声明:
private:
QWizardPage *createPage1();
QWizardPage *createPage2();
QWizardPage *createPage3();
//实现这三个函数
QWizardPage * Widget::createPage1() //wizard page 1
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("Introduce"));
return page;
}
QWizardPage * Widget::createPage2() //wizard page 2
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("Select Information"));
return page;
}
QWizardPage * Widget::createPage3() //wizard page 3
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("Finish"));
return page;
}
//执行向导
QWizard wizard(this);
wizard.setWindowTitle(tr("Wizard Dialog"));
wizard.addPage(createPage1()); //add wizard page
wizard.addPage(createPage2());
wizard.addPage(createPage3());
wizard.exec();
显示如下:
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓