QT的标准对话框使用

news/2024/12/5 12:53:28/

QT 中提供的标准对话框:
QColorDialog
QFileDialog
QFontDialog
QInputDialog
QMessageBox
QProgressDialog

1 颜色选择对话框使用:

void ShowColorSelectDialog(){QTextStream out(stdout);//颜色对话框:QColor color = QColorDialog::getColor(Qt::blue,this,"please select a color",QColorDialog::NoButtons);if(color.isValid()){out << "selected a color" << endl;}else{out << "did not selected color" << endl;}
}

2 文件对话框使用:

void ShowSelectFileDialog()
{QTextStream out(stdout);QString selectFile = QFileDialog::getOpenFileName(this,"Open file",R"(C:\Users\BZ\Desktop)","Images (*.png *.xpm *.jpg)",nullptr,QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly);if(selectFile.isEmpty()){out << "not select file" << endl;}else{out << "selected file is:" << selectFile << endl;}
}void ShowSaveFileDialog()
{QTextStream out(stdout);QString saveFilePath = QFileDialog::getSaveFileName(this,"save file",R"(C:\Users\BZ\Desktop)","Images (*.png *.xpm *.jpg)");if(saveFilePath.isEmpty()){out << "not set save file" << endl;}else{out << "save file path:" << saveFilePath << endl;qDebug() << "save file path:" << saveFilePath << endl;}
}void ShowSelectFileDialog2()
{QFileDialog dialog(this);dialog.setFileMode(QFileDialog::AnyFile);dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));//dialog.setViewMode(QFileDialog::List);dialog.setViewMode(QFileDialog::Detail);dialog.setOptions(QFileDialog::DontUseNativeDialog);dialog.setDirectory(R"(C:\Users\BZ\Desktop)");//dialog.setLabelText(QFileDialog::LookIn,"this is a test");dialog.setWindowTitle("this is a test");//dialog.setAcceptMode(QFileDialog::AcceptSave);dialog.setAcceptMode(QFileDialog::AcceptOpen);QStringList fileNames;if (dialog.exec())fileNames = dialog.selectedFiles();
}

3 字体选择对话框使用:

void ShowFontDialog()
{QTextStream out(stdout);bool ok = false;QFont selectedfont = QFontDialog::getFont(&ok,this);if(ok){out << "selected font name:" << selectedfont.family() << endl;}else{out << "dit not select font" << endl;}
}

4 输入对话框的使用(用于从用户哪里获取一个单一的输入值):
这里提供了4 种方式:getText、getItem、getInt、getDouble.

void MainWindow::ShowInputDialog()
{QTextStream out(stdout);bool ok = false;//getText
//    QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),
//                                      tr("User name:"), QLineEdit::Normal,
//                                      QDir::home().dirName(), &ok);
//    if (ok && !text.isEmpty()){
//        out << "input text is:" << text << endl;
//    }else{
//        out << "not input" << endl;
//    }//getItem
//    QStringList list{"item1","item2","item3","item4","item5"};
//    QString selectedItem = QInputDialog::getItem(this,"getItem","item",list,0,false,&ok);
//    if(ok && !selectedItem.isEmpty()){
//        out << "selected item is:" << selectedItem << endl;
//    }else{
//       out << "not selected" << endl;
//    }//getInt
//    int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),
//                              tr("Percentage:"), 25, 0, 100, 1, &ok);
//    if (ok){
//        out << "select num is:" << i << endl;
//    }else
//    {
//        out << "not select num" << endl;
//    }//getDoubledouble d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"),tr("Amount:"), 37.56, -10000, 10000, 2, &ok);if (ok){out << "set num is:" << d << endl;}else{out << "not set num" << endl;}
}

5 消息对话框使用:

void MainWindow::ShowMessageBox()
{QTextStream out(stdout);
//    //方式一
//    QMessageBox box(this);
//    QString str = QString::fromUtf16(u"这是一个测试");
//    QString str2 = QString::fromUtf8("这是一个测试");//    box.setText(str);
//    box.setInformativeText("hello world");
//    box.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
//    box.setDefaultButton(QMessageBox::Save);
//    box.exec();//方式二,使用静态函数。// information(), question(), warning(), and critical()int ret = QMessageBox::warning(this, tr("My Application"),tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QMessageBox::Discard| QMessageBox::Cancel,QMessageBox::Save);out << "ret is:" << ret << endl;
}

6 进度条对话框使用:

void ShowProgressDialog()
{
//    QProgressDialog progress("Copying files...", "Abort Copy", 0, 100, this);
//        progress.setWindowModality(Qt::WindowModal);
//        progress.show();
//        for (int i = 0; i < 100; i++) {
//            progress.setValue(i);
//            Sleep(1000);
//            if (progress.wasCanceled())
//                break;
//            //... copy one file
//        }
//        progress.setValue(100);//另一种使用定时器去更改值。
}

http://www.ppmy.cn/news/107579.html

相关文章

生产环境之负载均衡LVS+keepalived方案(2)_LVS介绍

LVS简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;linux内核2.6.X之后的版本默认已集成了LVS模块&#xff08;内核模块名为&#xff1a;ipvs&#xff09;&#xff0c;实现了基于传输层的请求负载均衡调度方案&#xff0c;LVS支持的工作模…

Data Feed数据源

本文档参考backtrader官方文档,是官方文档的完整中文翻译,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 Data Feed数据源章节目录 数据源(data feed)数据源概述数据源通用参数CSV数据源通用参数GenericCSVData数据源…

公开报名|CCPTP云渗透测试认证专家第二期培训班,将在云网基础设施安全国家工程研究中心举办

CCPTP云渗透测试认证专家由云安全联盟大中华区发布&#xff0c;是全球首个云渗透测试能力培养课程及人才培养认证&#xff0c;弥补了国内云渗透测试认知的差距和技能型人才培养的空白。4月1日-13日&#xff0c;CCPTP 首期班成功举办&#xff0c;于2023年5月10日部分学员完成考试…

如何Debug调试Android程序

当开发过程中遇到一些奇怪的bug&#xff0c;但又迟迟定位不出来原因是什么的时候&#xff0c;最好的解决办法就是调试了。调试允许我们逐行地执行代码&#xff0c;并可以实时观察内存中的数据&#xff0c;从而能够比较轻易地查出问题的原因。总结一下使用Android Studio来调试A…

PMP适合哪些人去考?

从技术向管理转型的工程技术人员&#xff1a;对于那些在职业生涯中转向项目管理的技术人员&#xff0c;PMP证书提供了必要的桥梁&#xff0c;使他们能够掌握项目管理的基本原理和最佳实践。 缺乏系统项目管理理论知识的项目经理&#xff1a;大部分项目经理都是技术出身&#x…

Java 高级应用-多线程-(二)线程安全问题及解决

当我们使用多个线程访问同一资源&#xff08;可以是同一个变量、同一个文件、同一条 记录等&#xff09;的时候&#xff0c;若多个线程只有读操作&#xff0c;那么不会发生线程安全问题。但是如 果多个线程中对资源有读和写的操作&#xff0c;就容易出现线程安全问题。 5.1 同…

Java 高级应用-多线程-(三)实现 Callable 接口与使用线程池创建线程

实现 Callable 接口 • 与使用 Runnable 相比&#xff0c; Callable 功能更强大些 – 相比 run()方法&#xff0c;可以有返回值 – 方法可以抛出异常 – 支持泛型的返回值&#xff08;需要借助 FutureTask 类&#xff0c;获取返回结果&#xff09; • Future 接口&#xff08;…

MQ学习笔记--(SpringAMQP)

SpringAMQP–基本介绍 什么是SpringAMQP SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp AMQP&#xff1a;是用于在应用程序或之间传递业务消息的开放标准。该协议与语言和平台无关&#xff0c;更符合微服务中独立性的要求 Spring AMQP&#xff…