/* * 这是几个标准对话框的使用方法 * 能够经过按钮触发槽,进而建立标准对话框对象 * 建立对象后所需操做仅仅是设置几个参数 */ #include <QDebug> #include <QColorDialog> //颜色对话框 #include <QFileDialog> //文件对话框 #include <QFontDialog> //字体对话框 #include <QInputDialog> //输入对话框 #include <QProgressDialog> //进度对话框
选取颜色的对话框函数
void MyWidget::on_pushButton_clicked() { QColor color = QColorDialog::getColor(Qt::red, this, "颜色框"/*, QColorDialog::ShowAlphaChannel*/); //调用颜色对话框的静态函数,优势是不用建立对象 //前3参数为初始颜色,父窗口,对话框标题, //注释掉的可选参数功能是在对话框中显示透明度选项, qDebug()<< "color: " << color;//调试用 // qDebug的输出好比:color: QColor(ARGB 1, 0, 0, 0),分别是透明度alpha,红绿蓝 //alpha默认值1表示彻底不透明,0是彻底透明,三基色0~1对应0~255 /* //也能够建立对象,设置方面更灵活 QColorDialog dialog(Qt::red, this); //建立对象 dialog.setOption(QColorDialog::ShowAlphaChannel); dialog.exec(); //模态方式运行 QColor color = dialog.currentColor(); //获取当前颜色 qDebug() << "color: " <<color; //输出颜色信息 */ }
文件对话框,打开保存文件等,但如下函数均只是获取文件/文件夹路径和名称,并不执行打开、保存等实际操做字体
void MyWidget::on_pushButton_2_clicked() { //该类有许多其余函数,可自行查阅 QString fileName = QFileDialog::getOpenFileName(this, "单文件选择框", "d:", "图片文件(*png *jpg);;文本文件(*txt)"); //以模态方式运行一个文件对话框,选择单个文件,不能是文件夹 //单击打开,返回所选文件名称格为如:fileName: "E:/爱佳利/Pictures/she/she.png" //多个文件是getOpenFileNames,须要使用QStringList fileNames = //4参数为父窗口,对话框标题,默认路径,文件类型过滤器,不指定则默承认选择全部类型的文件 //同类别两文件类型之间须要一个空格*png *jpg,不一样类别之间两分号;; //另有getSaveFileName()保存文件和getExistingDirectory()获取文件夹路径,不能是文件 qDebug() << "fileName: " << fileName; /* QString fileName1 = QFileDialog::getSaveFileName(this, "保存文件对话框", QString(), "图片类型(*png)"); qDebug() << "fileName1: " << fileName1 ; QString fileName2 = QFileDialog::getExistingDirectory(this, "文件路径对话框", "d:"); qDebug() << "fileName2: " << fileName2; QStringList fileNames = QFileDialog::getOpenFileNames(this, "多文件选择框", "d:", "图片文件(*png *jpg)"); qDebug() << "fileNames: "; for(auto x: fileNames){ qDebug() << x; } */ }
选取字体的对话框ui
void MyWidget::on_pushButton_3_clicked() { bool ok {false}; //ok用于标记是否单击了OK按钮 QFont font = QFontDialog::getFont(&ok, this); //单击OK按钮,ok设置为true,font指向新字体 //根据是否选择了字体,进行字体更改 if(ok) ui->pushButton_3->setFont(font); }
限定输入类型和范围的对话框this
void MyWidget::on_pushButton_4_clicked() { //用于限定输入内容 bool ok {false}; //用于标记是否输入成功 //输入字符串 QString string = QInputDialog::getText(this, "输入字符串", "用户名:", QLineEdit::Normal, "admin", &ok); if(ok) qDebug() << "string:" << string; //6参数做用为:父窗口,窗口标题,对话框中标签显示文本, //输入内容的显示模式(如密码设为黑点),输入框中默认字符串,点击确认后的变量 /* //输入整数 int value1 = QInputDialog::getInt(this, "输入整数", "年龄", 18, 1, 200, 1, &ok); if(ok) qDebug() << "value1: " << value1; //第二行参数做用为:默认数值,最小,最大,使用箭头的变化幅度,确认标记 //输入浮点数 double value2 = QInputDialog::getDouble(this, "输入浮点数", "圆周率", 3.14, 2.14, 4.14, 10, &ok); if(ok) qDebug() << "value2: " << value2; //二行参数10表示格式为保留10位小数 //输入或选择项目 QStringList items{}; items << "项目1" <<"项目2"; QString item = QInputDialog::getItem(this, "项目输入", "选择或输入一个项目", items, 0, true, &ok); if(ok) qDebug() << "item:" <<item; //二行参数为:提供的可选项目列表对象,默认选中项目0,项目可自主输入,确认标记 */ }
进度条对话框调试
//Qt中进度条的显示方式有2种,一种是控件方式:QProgressBar; //一种是针对慢速过程的对话框方式:QProgressDialog。 void MyWidget::on_pushButton_5_clicked() { //QProgressBar和QProgressDialog都可经过setRange设置计数范围,用循环累加实现变化。 const long COUNT = {999999};//设置进度条计数值 const long STEP = {1};//设置计数步进值 QProgressDialog *progressDlg = new QProgressDialog(this); progressDlg->setWindowModality(Qt::WindowModal); //设置模态 progressDlg->setMinimumDuration(0);//dialog出现需等待的时间 progressDlg->setWindowTitle("进度对话框"); //标题 progressDlg->setLabelText("正在复制"); //显示文本 progressDlg->setCancelButtonText("取消"); //按钮文本 progressDlg->setRange(0, COUNT); for(long i = 0;i <= COUNT;i += STEP){ if(progressDlg->wasCanceled()) return; progressDlg->setValue(i); } qDebug() << "复制结束!"; }