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

对话框

  • 一.前言
  • 二.文件对话框
    • 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");
}

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

七.总结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS学习笔记:动画——使用animation添加动画效果

过渡和动画 啥是过渡? 例如transition: all 0.5s; -> 拥有该属性的标签&#xff0c;在样式改变时&#xff0c;将在设定的时间内逐渐过渡到另一个样式 啥是动画&#xff1f; 和过渡有点类似&#xff0c;只不过常常用于实现多个状态间的变化过程&#xff0c;动画过程可控…

基于PHP+MySQL组合开发的720VR全景小程序源码系统 一键生成三维实景 前后端分离带网站的安装代码包以及搭建教程

系统概述 这款源码系统是专门为实现 720VR 全景展示而设计的。它结合了先进的技术和创新的理念&#xff0c;能够将真实场景以全景的形式呈现给用户&#xff0c;让用户仿佛身临其境。该系统采用 PHP 进行后端开发&#xff0c;MySQL 作为数据库管理系统&#xff0c;确保了系统的…

【JAVA |Object类重写实例】Cloneable 接口、Comparable接口、比较器

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

阿贝云免费虚拟主机及免费云服务器评测

阿贝云是一家提供免费虚拟主机和免费云服务器的公司&#xff0c;其服务质量备受用户好评。用户可以通过阿贝云的网站 https://www.abeiyun.com 进行申请并获得免费服务。首先&#xff0c;我们来看看阿贝云的免费虚拟主机服务。免费虚拟主机提供了足够的存储空间和带宽&#xff…

HackTheBox-Machines--Cronos

文章目录 0x01 信息收集0x02 命令注入漏洞0x03 权限提升 Cronos 测试过程 0x01 信息收集 1.端口扫描 发现 SSH&#xff08;22&#xff09;、DNS&#xff08;53&#xff09;、HTTP&#xff08;80&#xff09;端口 nmap -sC -sV 10.129.227.2112.53端口开启&#xff0c;进行DNS…

靶机Moonraker_1练习报告

Moonraker: 1靶机练习实践报告 一、安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。 直接用VMWare打开.ovf文件即可。 …

【VTKExamples::Utilities】第四期 CameraModifiedEvent

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例CameraModifiedEvent,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. CameraModifi…

OpenMV的VisionBoard视觉识别开发板学习记录

此篇博客仅用于对VisionBoard的开发板的学习研究记录&#xff0c;没有教学内容。 一、资料来源 开发板资料链接 开发板环境搭建手册 开发板视频教程 板子的资料网站 openmv官方的网站 目录 一、资料来源二、针对 VisionBoard的目标识别和定位总结1. 目标识别功能1.1 物体检测…

react ant 表格实现 拖拽排序和多选

项目背景 : react ant 要实现 : 有多选功能(实现批量删除 , 也可以全选) 可以拖拽(可以复制 , 方便顶部的搜索功能) 要实现效果如下 1 这是最初的拖拽功能实现 , 不能复制表格里的内容 , 不符合要求 2 更改了ROW的内容 , 实现了可以复制表格内容 代码 //控制是否可以选中表格…

Oracle数据库操作问题汇总

一、简介 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统&#xff0c;系统可移植性好、使用方便、功能强&…

数据结构--二叉树--顺序存储判断是否二叉搜索树(2022统考真题)

数据结构–二叉树–顺序存储判断是否二叉搜索树(2022统考真题) 题目描述&#xff1a; 思路 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;是一种具有以下性质的二叉树&#xff1a; 对于树中的每个节点 N&#xff0c;它的左子树&#xff08;如果…

重学java 49 List接口

但逢良辰&#xff0c;顺颂时宜 —— 24.5.28 一、List接口 1.概述: 是collection接口的子接口 2.常见的实现类: ArrayList LinkedList Vector 二、List集合下的实现类 1.ArrayList集合的使用及源码分析 1.概述 ArrayList是List接口的实现类 2.特点 a.元素有序 —> 按照什么顺…

Oracle中rman的增量备份使用分享

继上次使用RMAN的全量备份和异机还原以后&#xff0c;开始研究一下增量备份和还原的方法。相比于全量RMAN的备份还原&#xff0c;增量的备份还原就相对简单。本实践教程直接上操作&#xff0c;还是回归到一个问题&#xff0c;就是关于两个数据库创建时候&#xff0c;必须保持or…

【职业教育培训机构小程序】教培机构“招生+教学”有效解决方案

教培机构“招生教学”有效解决方案在数字化转型的浪潮中&#xff0c;职业教育培训机构面临着提升教学效率、拓宽招生渠道、增强学员互动等多重挑战。小程序作为一种新兴的移动应用平台&#xff0c;为解决这些痛点提供了有效途径。 一、职业教育培训机构小程序的核心功能 &…

SpringBoot自动装配源码

自动装配&#xff1a; 实际上就是如何将Bean自动化装载到IOC容器中管理&#xff0c;Springboot 的自动装配时通过SPI 的方式来实现的 SPI&#xff1a;SpringBoot 定义的一套接口规范&#xff0c;这套规范规定&#xff1a;Springboot 在启动时会扫描外部引用 jar 包中的META-IN…

栈(从数据结构的三要素出发)

文章目录 逻辑结构物理结构顺序栈链栈共享栈 数据的操作顺序栈的基本操作链栈的基本操作共享栈的基本操作 数据结构的应用栈在括号匹配中的应用栈在表达式求值中的应用栈在递归调用中的应用 逻辑结构 栈是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表&#xf…

保留两位小数不四舍五入,10000.55变成10000.54的坑

正解 function moneyFormat(num){ let money num "";//隐式转换为字符串和toString()效果一样//没有小数补齐这个0if(money.indexOf(".")"-1"){moneymoney".00";}else{//有小数截取前二位小数moneymoney.substring(0,money.inde…

工业AI的崛起,中国自主创新的新机遇

我们都知道&#xff0c;互联网已经深刻地改变了我们的生活方式&#xff0c;催生了无数的新型商业模式和创新产业&#xff0c;推动了社会的经济变革。中国在互联网领域的发展取得了举世瞩目的成就&#xff0c;建成了全球规模最大、技术领先的5G网络&#xff0c;互联网应用的普及…

vue3 vite title 页面标题设置

效果图&#xff1a; 1. 安装 vite-plugin-html 插件 npm install vite-plugin-html -D2. 修改 vite.config.js import {defineConfig, loadEnv} from vite import { createHtmlPlugin } from "vite-plugin-html" import {resolve} from path import vue from vitej…

我说同事咋找工作命中率这么高,原来是学习了这些招式

最近有两个同事离职了&#xff0c;其中一个还是专科&#xff0c;他俩一个是前端开发&#xff0c;一个是python开发&#xff0c;两个人都接近35岁了。我们还劝告他们&#xff0c;不要离职&#xff0c;要骑驴找马。但了解后&#xff0c;他俩非常有信心的说&#xff1a;不怕&#…