【qt】一次性学会所有对话框

news2024/9/25 17:19:09

对话框

  • 一.前言
  • 二.文件对话框
    • 1.选择一个文件
    • 2.选择多个文件
    • 3.选择目录
    • 4.保存文件
  • 三.颜色对话框
    • 1.获取颜色
  • 四.字体对话框
    • 1.获取字体
  • 五.输入对话框
    • 1.输入文本
    • 2.输入整数
    • 3.输入小数
    • 4.输入条目
  • 六.消息对话框
    • 1.问题框
    • 2.信息框
    • 3.警告框
    • 4.危机框
    • 5.关于框
    • 6.关于qt框
    • 七.总结

一.前言

对话框就是主窗口的子窗口弹出,以供你操作完后,才能继续对主窗口进行操作。
光说不练假把式,我们还是来边做边学。
目标图:
在这里插入图片描述

看到这么多是不是已经害怕了,不用怕,只要记住接口就行了,参数我们可以查找在线文档!

先做界面吧!
在这里插入图片描述
不会的可以问我哦,界面的拖放就不讲了!

二.文件对话框

1.选择一个文件

void MainWindow::on_pushButtonSelectFile_clicked()
{
   QString fileName= QFileDialog::getOpenFileName(
               this,//父窗口是谁
               "选择一个文件",//对话框标题
               QDir::currentPath(),//打开对话框的路径
               "文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");//筛选器
   if(!fileName.isEmpty())
   {
       ui->plainTextEdit->appendPlainText(fileName);
   }
}

运行结果:
点击会弹出你刚刚设置路径的文件对话框
在这里插入图片描述

确定后
在这里插入图片描述

可以通过f1来查看参数,所以我们需要的是记住接口
在这里插入图片描述

2.选择多个文件

用法基本与选择一个文件相同,只不过接口多了一个S,返回的是一个字符串链表而已!

void MainWindow::on_pushButtonSelectFiles_clicked()
{
    QStringList fileNames= QFileDialog::getOpenFileNames(
                this,
                "选择多个文件",
                QDir::currentPath(),
                "文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");
    if(fileNames.count()>0)
    {
        for(int i=0;i<fileNames.count();i++)
        {
            ui->plainTextEdit->appendPlainText(fileNames[i]);
        }
        
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述

3.选择目录

void MainWindow::on_pushButtonSelectMu_clicked()
{
    QString fileName= QFileDialog::getExistingDirectory(
                this,
                "选择一个文件",
                QDir::currentPath(),
                QFileDialog::ShowDirsOnly);//只显示目录
    if(!fileName.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(fileName);
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述

4.保存文件

void MainWindow::on_pushButtonSaveFile_clicked()
{
    QString fileName= QFileDialog::getSaveFileName(
                this,
                "选择一个文件",
                QDir::currentPath(),
                "文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");
    if(!fileName.isEmpty())//如果路径不为空
    {
        //将纯文本编辑器的内容保存到txt文件中
        QFile qFile(fileName);
        //以只写,保存到文本文件,截断的方式打开文件
        if(!qFile.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate))
        {
            return;//打开文件失败就返回
        }
        QTextStream stream(&qFile);
        stream<<ui->plainTextEdit->toPlainText();
        qFile.close();
        ui->plainTextEdit->appendPlainText("已保存到:"+fileName);
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述
我们来看看是不是真的保存了
在这里插入图片描述

哈哈看来真的保存了也。

三.颜色对话框

1.获取颜色

void MainWindow::on_pushButtonColoe_clicked()
{
    QPalette plet=ui->plainTextEdit->palette();//拿到纯文本编辑器
    QColor currentColor=plet.color(QPalette::Text);//拿到文本颜色
    
    QColor color=QColorDialog::getColor(
                currentColor,//默认选中颜色
                this,
                "颜色选择框");
    if(color.isValid())
    {
        plet.setColor(QPalette::Text,color);//修改成选择的颜色
        ui->plainTextEdit->setPalette(plet);//设置到纯文本中
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述

四.字体对话框

1.获取字体

void MainWindow::on_pushButtonFont_clicked()
{
    bool ok=false;
    QFont font=QFontDialog::getFont(
                         &ok,//判断是否选择成功
                         ui->plainTextEdit->font(),//对话框默认字体
                         this,
                         "字体选择框");
    if(ok)
    {
        ui->plainTextEdit->setFont(font);
    }
}

参数我也记不住,一定要看在线文档呀
在这里插入图片描述

运行结果:
在这里插入图片描述

五.输入对话框

1.输入文本

void MainWindow::on_pushButtonString_clicked()
{
    bool ok=false;
    QString str=QInputDialog::getText(
                this,
                "输入文本框",
                "请输入姓名:",
                QLineEdit::Normal,//输入的方式
                "姚国林",//默认值
                &ok);//判断是否成功
    if(ok&&!str.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(str);
    }
}

运行结果:
在这里插入图片描述
这里的输入方式有4种
NoEcho就是没有回显的,类似于Linux操作系统里输入密码
Password就是正常的*******这种
最后一个就是,当输入密码时显示,不输入的时候 ******

在这里插入图片描述

2.输入整数

void MainWindow::on_pushButtonInt_clicked()
{
    bool ok=false;
    //我这里是输入整数打算与字体大小关联起来
    int value =QInputDialog::getInt(
                this,
                "整数输入框",
                "请输入字体大小:",
                ui->plainTextEdit->font().pixelSize(),//默认输入的大小
                8,//最小值
                80,//最大值
                1,//单步值
                &ok);
    if(ok)
    {
        QFont font=ui->plainTextEdit->font();
        font.setPointSize(value);
        ui->plainTextEdit->setFont(font);
    }
}

运行结果:
在这里插入图片描述

3.输入小数

void MainWindow::on_pushButtonFloat_clicked()
{
    bool ok=false;
    double value=QInputDialog::getDouble(
                this,
                "输入浮点数框",
                "输入小数:",//前缀
                3.14,//默认值
                0,//最小值
                999,//最大值
                2,//精度
                &ok);
    if(ok)
    {
        QString str=QString::asprintf("输入了一个浮点数:%.2f",value);
        ui->plainTextEdit->appendPlainText(str);
    }
}

运行结果:
在这里插入图片描述

4.输入条目

void MainWindow::on_pushButtonItem_clicked()
{
    bool ok=false;
    QStringList jobs={"老师","医生","炊事员","程序员"};
    QString job= QInputDialog::getItem(
                this,
                "输入条目框",
                "请选择职业:",
                jobs,//条目列表
                0,//默认显示第几个
                true,//是否能进行编辑
                &ok);
    if(ok&&!job.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(job);
    }
                
}

运行结果:

在这里插入图片描述

六.消息对话框

1.问题框

void MainWindow::on_pushButtonQuestion_clicked()
{
    QMessageBox::StandardButton ret= QMessageBox::question(//返回的是一个标准按钮
                this,
                "问题框",
                "你承认你是一个帅哥吗?",//问题框内容
                QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,//选择的按钮
                QMessageBox::NoButton);//默认的选择
    
    if(ret==QMessageBox::Yes)
    {
        ui->plainTextEdit->appendPlainText("选择了 YES");
    }
    else if(ret==QMessageBox::No)
    {
        ui->plainTextEdit->appendPlainText("选择了 No");
    }
    else if(ret==QMessageBox::Cancel)
    {
        ui->plainTextEdit->appendPlainText("选择了 Cancel");
    }
    else
    {
        ui->plainTextEdit->appendPlainText("什么也没有选择");
    }
}

运行结果:
在这里插入图片描述

2.信息框

void MainWindow::on_pushButtonInformation_clicked()
{
    QMessageBox::information(
                this,
                "消息框",
                "你居然不给我点关注",
                QMessageBox::Ok,
                QMessageBox::NoButton);
}

运行结果:
在这里插入图片描述

3.警告框

void MainWindow::on_pushButtonWarning_clicked()
{
    QMessageBox::warning(
                this,
                "警告框",
                "你要完蛋了!");
}

运行结果:
在这里插入图片描述

4.危机框

void MainWindow::on_pushButtonCritical_clicked()
{
    QMessageBox::critical(
                this,
                "危机框",
                "你完蛋了!系统姚重启了");
}

运行结果:
在这里插入图片描述

5.关于框

void MainWindow::on_pushButtonAbout_clicked()
{
    QMessageBox::about(
                this,
                "关于框",
                "我是一位天才,我的能力十分强悍!");
}

运行结果:
在这里插入图片描述

6.关于qt框

void MainWindow::on_pushButtonAboutQt_clicked()
{
    QMessageBox::aboutQt(
                this,
                "关于Qt");
}

运行结果:
在这里插入图片描述

七.总结

虽然对话框的种类虽多,但是一类的用法基本差不多,重要的是我们要记住接口就行了,参数不要背,看在线文档!
对了,这里姚用到这些头文件:
在这里插入图片描述

慢慢成长,慢慢成为大在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1705869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

芯片设计 | FPGA设计的各种仿真概念分析

前仿真,即功能仿真。 可使用专用于仿真的工具对设计进行功能仿真,以验证电路功能是否符合设计要求。 通过功能仿真能够及时发现设计中的错误,从而加快设计进度,提高设计的可靠性。 综合后的仿真 把综合生成的标准延时反标注到综合仿真模型去,可估计门延时带来的影响,…

Java核心: 使用asm操作字节码

在上一篇<Java核心: 注解处理器>中我们提到&#xff0c;通过实现AbstractProcessor&#xff0c;并调用javac -processor能够生成代码来实现特殊逻辑。不过它存在两个明显的问题: 只能新增源文件来扩展逻辑&#xff0c;无法修改现有的类或方法 必须有一个单独的编译过程&a…

【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言随机查询语…

首发AI新功能 贝锐向日葵远程控制IT精英版助力IT运维

从1947年晶体管发明开始&#xff0c;以计算机为核心载体的IT技术狂奔发展至今&#xff0c;这期间IT运维方式也在不断的发展变化。 我们经历了50s-70s的肉身更换电子管&#xff1b; 经历了80s-90s的本地软件运维&#xff1b; 经历了90s-00s互联网的澎湃发展&#xff0c;Telne…

VMware vSphere Distributed Services Engine 和利用 DPU 实现网络加速

VMware相关学习专栏&#xff1a;虚拟化技术 vSphere 8.0 通过加速数据处理单元 (DPU) 上的网络功能实现了突破性的工作负载性能。 vSphere 8.0 通过加速 DPU 上的网络功能实现了突破性工作负载性能&#xff0c;从而满足现代分布式工作负载的吞吐量和延迟需求。借助 vSphere Dis…

【C++题解】1133. 字符串的反码

问题&#xff1a;1133. 字符串的反码 类型&#xff1a;字符串 题目描述&#xff1a; 一个二进制数&#xff0c;将其每一位取反&#xff0c;称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符&#xff0c;则它和字符 a 的距离与它的反码和字符 z 的距离…

godot4.2 + GDextension c++在 vs code 中断点调试配置

游戏开发中如果做不到自己编写的代码做断点调试&#xff0c;无不是瞎子摸象&#xff0c;特别是C这么底层的语言。这2天开始在VS studio中折腾&#xff0c;一直折腾不出结果&#xff0c;几次想要放弃GODOT。最终今天在VS code中搞定了这断点调试C代码。 在上一篇文章我已经做好了…

windows部署ollama+maxkb+vscode插件continue打造本地AI

windows部署ollamamaxkbvscode插件continue打造本地AI 前言下载ollamadocker desktopvscode插件continue 安装安装ollama设置环境变量 安装docker desktop部署maxkb容器 安装vscode插件模型搜索和推荐 前言 我采用docker运行maxkb&#xff0c;本地运行ollama形式。可能是windo…

深度神经网络——贝叶斯与朴素贝叶斯定理

概述 贝叶斯定理是概率论中一个非常重要的概念&#xff0c;它提供了一种在已知某些相关事件的概率时&#xff0c;计算另一个事件发生概率的方法。在你提供的内容中&#xff0c;贝叶斯定理被描述为一种“魔法”&#xff0c;因为它能够使计算机通过分析大量的数据来预测人们可能…

今日好料推荐(Altium Designer + 仿真器驱动)

今日好料推荐&#xff08;Altium Designer 仿真器驱动&#xff09; 参考资料在文末获取&#xff0c;关注我&#xff0c;获取优质资源。 Altium Designer Altium Designer 是一种高度集成的电子设计自动化 (EDA) 软件工具&#xff0c;广泛应用于电子电路和印刷电路板 (PCB) …

汇编原理(三)编程

源程序&#xff1a; 汇编指令&#xff1a;有对应的机器码与其对应 伪指令&#xff1a;无对应的机器码&#xff0c;是由编译器来执行的指令&#xff0c;编译器根据伪指令来进行相关的编译工作。 ex1:XXX segment、XXX ends这两个是一对成对使用的伪指令&#xff0c;且必须会被用…

充电器快充协议与PW6606快充电压诱骗芯片

随着科技的快速发展&#xff0c;手机、平板等电子产品对于充电速度的要求越来越高&#xff0c;快充技术应运而生。在市场上&#xff0c;我们常见的快充充电器主要分为两种类型&#xff1a;A口充电器&#xff08;USB口&#xff09;和TYPE C口充电器。每种类型都拥有其独特的快充…

埃文科技携数据要素产品亮相第七届数字中国建设峰会

第七届数字中国建设峰会&#xff08;以下简称“峰会”&#xff09;于2024年5月24日至25日在福建省福州市举办。此次峰会是国家数据工作体系优化调整后举办的首次数字中国建设峰会。本届峰会由国家发展改革委、国家数据局、国家网信办、科技部、国务院国资委、福建省人民政府共同…

10分钟就可以用AI制作绘本小故事?自媒体涨粉变现利器,实战练习,轻松上手!

大家好&#xff0c;我是向阳 关于最近有老铁私信我如何使用AI制作儿童画册进行AI变现&#xff0c;由于需求的朋友不少&#xff0c;那么本次我将从头到尾将整个创作过程简单和各位介绍下&#xff0c;也欢迎各位老铁一些学习交流。 本次制作过程中所有工具均不需要付费也无需魔…

YOLOv10涨点改进:如何魔改注意力进行二次创新,高效替换PSA | NEU-DET为案列进行展开

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进&#xff1a;替换YOLOv10中的PSA进行二次创新&#xff0c;1&#xff09;EMA替换 PSA中的多头自注意力模块MHSA注意力&#xff1b;2&#xff09; EMA直接替换 PSA&#xff1b; 在NEU-DET案列进行可行性验证&#xff0c;1&#x…

Laravel 图片添加水印

和这个配合使用 Laravel ThinkPhP 海报生成_laravel 制作海报-CSDN博客 代码 //水印 $x_length $imageInfo[0]; $y_length $imageInfo[1];$color imagecolorallocatealpha($posterImage, 255, 255, 255, 70); // 增加透明度参数alpha$font_size 40; //字体大小 $angle …

RAG架构的数据准备流程

虽然现成的大型语言模型 (LLM) 功能强大&#xff0c;但企业发现&#xff0c;根据其专有数据定制 LLM 可以释放更大的潜力。检索增强生成 (RAG) 已成为这种定制的主要方法之一。RAG 模型将大型语言模型强大的语言理解能力与检索组件相结合&#xff0c;使其能够从外部数据源收集相…

螺旋矩阵(算法题)

文章目录 螺旋矩阵解题思路 螺旋矩阵 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]解题思路 模…

全局数据 与 singleton 类的选择

1&#xff0c;singleton 相对于全局数据的优势 使用 Singleton 类相对于全局数据具有以下好处&#xff1a; 1.1. 延迟初始化&#xff1a;Singleton 类可以实现延迟初始化&#xff0c;即在需要时才创建实例&#xff0c;而全局数据在程序启动时就会被初始化。这可以节省资源并提…

SpringBoot——整合RabbitMQ收发消息

目录 RabbitMQ消息队列 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 index.html前端页面 RabbitMQConfig配置类 RabbitMQProducer生产者 RabbitMQConsumer消费者 IndexController控制器 SpringbootRabbitmqApplication启动类 测试 Ra…