QT 对话框 仿文本编辑器

news2024/11/13 9:43:09

        对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互

一、消息对话框(QMessageBox)

1、QMessageBox类成员函数实现

1)实例化 QMessageBox类 对象

2)设置对象属性

3)显示对话框

QMessageBox::QMessageBox(                    //构造函数函数名
                                            QMessageBox::Icon icon,                 //图标
                                            const QString &title,                   //窗口标题
                                            const QString &text,                     //窗口文本内容
                                            QMessageBox::StandardButtons buttons = NoButton,//按键
                                            QWidget *parent = nullptr)                //父组件

参数1:是一个该类提供的内部枚举类型

Constant                            Value           Description

QMessageBox::NoIcon         0              不提供图标.

QMessageBox::Question      4              提供一个问号的图标 
                      
QMessageBox::Information   1              提供一个 i 符号的图标
                 
QMessageBox::Warning        2              提供一个感叹号的图标表示警告         

QMessageBox::Critical          3              提供一个叉号图标表示错误

 参数4:是给对话框上提供的用于用户操作的按钮,也是一个枚举类型,如果需要提供多个按钮,中间使用位或隔开

Constant                                    Value                                     Description

QMessageBox::Ok                0x00000400     An "OK" button defined with the AcceptRole

QMessageBox::Open            0x00002000    An "Open" button defined with the AcceptRole

QMessageBox::Save            0x00000800    A "Save" button defined with the AcceptRole

QMessageBox::Cancel         0x00400000    A "Cancel" button defined with the RejectRole

QMessageBox::Close           0x00200000    A "Close" button defined with the RejectRole

......

2、静态函数实现

        系统提供4个静态成员函数:information、question、warning、critical

[static] QMessageBox::StandardButton//返回的是一个按钮

        QMessageBox::information( //函数名

                                                QWidget *parent, //父组件

                                                const QString &title, //对话框标题

                                                const QString &text, //对话框文本内容

                                                QMessageBox::StandardButtons buttons = Ok, //提供的按钮                                                 QMessageBox::StandardButton defaultButton = NoButton)

二、颜色对话框(QColorDialog)

1、所需头文件 QColorDialog 颜色对话框类   QColor 颜色类

2、一般不会对这个对话框进行太多设置,所以用静态成员函数实现

[static] QColor //返回一个颜色类对象

        QColorDialog::getColor( //函数名

                const QColor &initial = Qt::white, //打开对话框后的初始颜色

                QWidget *parent = nullptr, //父组件

                const QString &title = QString()) //对话框标题

三、字体对话框(QFrotDialog)

1、所需头文件 QFrotDialog 字体对话框类   QFrot字体类

2、一般不会对这个对话框进行太多设置,所以用静态成员函数实现

[static] QFont //返回值一个字体类的对象

QFontDialog::getFont( //函数名

        bool *ok, //用于地址传递,判断用户是否选中了某个字体

        const QFont &initial, //初始字体,对话框中的第一个字体,如果用户点击了取消,则将该字体作为函数返回值

        QWidget *parent = nullptr, //父组件

        const QString &title = QString()) //对话框标题

四、文件对话框(QFileDialog)

1、所需头文件 QFileDialog 文件对话框类   

2、一般不会对这个对话框进行太多设置,所以用静态成员函数实现

[static] QString //返回用户选中的文件路径 

        QFileDialog::getSaveFileName( //函数名

                QWidget *parent = nullptr, //父组件

                const QString &caption = QString(), //对话框标题

                const QString &dir = QString(), //遍历文件系统时的起始路径

                const QString &filter = QString()) //过滤器

五、QT中的io操作

1、依赖的类是QFile

2、使用QFile类实例化对象,用该对象对文件进行读写操作

3、可以使用构造函数打开文件,也可以调用无参构造,使用open函数打开文件

4、文件读写函数,read、readLine、readAll 、write

5、关闭文件close

仿文本编辑器

ui

 槽函数

#include "widget.h"
#include "ui_widget.h"
#include <QColor>//颜色类
#include <QColorDialog>//颜色对话框
#include <QMessageBox>//对话框
#include <QFontDialog>//字体对话框
#include <QFont>//字体类
#include <QFileDialog>//文件对话框
#include <QFile>//文件类
#include <QDebug>//信息调试类

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

//颜色
void Widget::on_pushButton_4_clicked()
{
    QColor c = QColorDialog::getColor(QColor(255,0,0),//初始颜色
                           this,//父组件
                           "颜色");//对话框标题

    //对选择的颜色进行判断
    if(c.isValid())
    {
        ui->textEdit->setTextColor(c);
    }else
    {
        QMessageBox::information(this,"提示","未选择颜色");
    }
}

//字体
void Widget::on_pushButton_3_clicked()
{
    bool ok = false; // 定义变量用于接收操作

    QFont f = QFontDialog::getFont(&ok,//接收用户操作
                                   QFont("隶书",10,10),//初始字体
                                   this,//父组件
                                   "选择字体"//对话框标题
                                   );
    //判断用户操作
    if(ok)
    {
        //选中了某个字体
        //ui->textEdit->setFont(f);//设置所有文本
        ui->textEdit->setCurrentFont(f);//设置选中文本
        ui->textEdit->setFontItalic(true);//斜体
    }else
    {
        QMessageBox::information(this,"提示","未选择字体");
    }

}

//保存
void Widget::on_pushButton_2_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this,//父组件
                                                    "保存",//对话框标题
                                                    "./",//起始目录
                                                    "所有文件(*.*);;图片(*.png *.jpg *.gif);;文本(*.txt);;原文件(*.cpp)");//过滤器
    //输出选择的文件
    qDebug()<<fileName;

    //QT中的文件操作
    QFile file(fileName);//使用得到的文件路径创建员工文件对象

    //以写的形式打开文件
    if(!file.open(QFile::WriteOnly|QFile::Text|QFile::Truncate))
    {              //    写         以文本的形式        清空
        //打开失败
        QMessageBox::warning(this,"警告","创建失败");
        return ;
    }
    //打开成功
    //获取ui界面上文本编辑器上的类容
    QString msg = ui->textEdit->toPlainText();

    //将信息写入文件
    file.write(msg.toLocal8Bit());
               //QSring -> 字节数组
    //关闭文件
    file.close();
}

//打开
void Widget::on_pushButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,"打开",
                                                    "./",
                                                    "所有文件(*.*);;图片(*.png *.jpg *.gif);;文本(*.txt);;原文件(*.cpp)");

    QFile file(fileName);

    //读的形式打开
    if(!file.open(QFile::ReadOnly|QFile::Text))
    {
        //打开失败
        QMessageBox::warning(this,"警告","打开失败");
        return ;
    }

    //获取信息
    QString msg = file.readAll();

    //转换格式
    msg.toStdString();

    //显示文本
    ui->textEdit->setText(msg);

    //关闭文件
    file.close();
}

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

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

相关文章

【Linux】解锁Shell脚本编写秘籍,编程高手之路等你开启

目录 1. 打印命令行提示符2. 获取用户输入的命令行字符串3. 对命令行字符串进行解析(分割&#xff09;4. 处理内建命令4.1. 内建命令</h3>4.2. 外部命令4.3. cd4.5. export4.6. echo 5. 执行命令5.1. 创建子进程进行程序替换 6. 重定向</h2>7. 总代码 1. 打印命令行…

[000-01-002].第03节:Git基础命令

我的博客大纲 我的GIT学习大纲 1、Git的常用命令 2、Git操作步骤&#xff1a; 2.1.操作Git第一步&#xff1a;设置全局的用户签名 1.设置用户名&#xff1a; 格式&#xff1a;git config --global user.name 用户名命令&#xff1a;git config --global user.name root 2.设置…

【开源免费】基于SpringBoot+Vue.JS在线旅游网站(JAVA毕业设计)

本文项目编号 T 025 &#xff0c;文末自助获取源码 \color{red}{T025&#xff0c;文末自助获取源码} T025&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【网络安全】漏洞挖掘:文件上传实现Webshell

未经许可,不得转载。 文章目录 正文正文 提交文件功能点,显示只能上传png、jpg、pdf文件 上传一个正常的图片,请求响应如下: 可以看到,该文件被上传到redacted.com,这为后面实现Webshell提供了前提。 接着,我上传webshell.php文件,文件内容为payload,拦截请求包,将…

逆变器的防孤岛测试性能评估

逆变器是太阳能发电系统中的关键设备&#xff0c;它将太阳能电池板产生的直流电转换为交流电&#xff0c;供电网或负载使用。在并网运行的太阳能发电系统中&#xff0c;如果电网出现故障&#xff0c;导致与电网断开连接&#xff0c;但逆变器仍然继续向电网供电&#xff0c;这种…

VBA CSV数据拆分

1. Range.TextToColumns函数 Option ExplicitSub txt2Col()ActiveSheet.Range("A2").CopyActiveSheet.PasteSelection.TextToColumns DataType:xlDelimited, _ConsecutiveDelimiter:True, Comma:True End Sub 2. 效果 执行前 cccccc 执行后效果​ cccc 3. 参照 更…

视频编辑SDK解决方案,代码逻辑结构清晰,接入便捷

美摄科技作为视频编辑技术领域的佼佼者&#xff0c;凭借其深厚的多媒体处理积累和创新精神&#xff0c;推出了革命性的移动端视频编辑SDK解决方案&#xff0c;彻底颠覆了传统视频编辑的方式&#xff0c;让每一份灵感都能轻松转化为引人入胜的视觉盛宴。 一站式视频创作与编辑平…

The First项目报告:BlackCardCoin让数字资产多元化

现有的区块链技术存在吞吐量瓶颈、互操作性有限和次优共识机制等问题&#xff0c;导致效率低下&#xff0c;阻碍了真正全球化金融体系的建立。因此&#xff0c;迫切需要一种创新的区块链&#xff0c;能够容纳现代金融的复杂性&#xff0c;包括即时结算、强大的安全措施&#xf…

用STM32做一个USB-TTL工具吧

某宝1分钱白嫖一个STM32C6T6的板子&#xff0c;然后手里的CH340挂了。那么自己做一个吧。 串口没有使用DMA空闲中断等等机制,有兴趣的加上了call我炒一下。 惯例CUBEMAX配置 1.usb-fs 2.usb-cdc 3.串口开一个中断&#xff0c;使用LL库 贴代码了 usart.c /* USER CODE BEGIN…

电源层 BGA 孔图案对高速信号质量的影响

电源层中的大量间隙孔会对高速信号的行为产生巨大影响。信号完整性对于设计人员来说是一个日益严重的问题&#xff0c;因为新设计需要具有越来越多引脚数的组件&#xff0c;而这些组件必须使用过孔进行连接以访问印刷电路板 (PCB) 的内层。孔和焊盘堆叠的正确设计可以产生高产量…

①MongoDB基本知识①

MongDB属于非关系型数据库一派&#xff0c;没有固定的数据格式存储&#xff0c;是一个具备高性能、高拓展的文档型数据库&#xff0c;数据以BSON(JSON的二进制)的格式存储。 特点: 基于对象模型&#xff0c;关系简单。没有外键的约束&#xff0c;也没有强连接表的关系&#x…

OpengGL教程(三)---使用VAO和VBO方式绘制三角形

本章参考官方教程&#xff1a;learnopengl-cn VertexShader.glsl #version 330 core layout(location 0) in vec3 position; layout(location 1) in vec3 color; uniform mat4 projection; // 投影矩阵 out vec4 ourColor; void main() {gl_Position projection * vec4(p…

信息安全管理工程师

信息安全管理工程师是专门从事信息安全领域的专业人员&#xff0c;主要负责维护计算机系统、网络和数据的安全&#xff0c;以抵御潜在威胁和攻击。 随着信息技术迅猛发展&#xff0c;对此类专业人才的需求持续上升。 如何能够成为一名卓越的信息安全管理工程师呢&#xff1f;…

springboot对数据库进行备份+对一个文件夹内的文件按时间排序,只保留最近的8个文件

首先&#xff0c;对数据库进行备份&#xff0c;用到的命令&#xff1a; mysqldump --opt -h 192.168.1.200 --userroot --passwordxxx --result-fileE://data//20240911141400.sql --default-character-setutf8 xxx&#xff08;数据库名&#xff09; 直接上代码 配置文件部分…

Android 语言国际化三步

1.罗列: 可以多罗列几个 不需要全部实现 res下创建这个文件:locale-config <locale-config xmlns:android"http://schemas.android.com/apk/res/android"><locale android:name"zh" /> <!--中文 --><locale android:name"e…

优化 TCP 以提高网络性能

本页面简要介绍了计算正确设置的方法&#xff0c;以缩短 Google Cloud 和混合场景中 TCP 连接的延迟时间。本页面还可帮助您了解如何缩短 Google Cloud 中流程之间的连接延迟时间。 现代微服务架构主张&#xff0c;开发者应该构建处理单一任务的小型服务。服务应根据系统的可靠…

Open CASCADE学习|通过指定点的曲线

在OpenCASCADE中&#xff0c;如果你想通过一系列指定的点来创建一条曲线&#xff0c;你可以使用Geom2dAPI_Interpolate类来实现二维曲线的插值&#xff0c;或者使用GeomAPI_Interpolate类来实现三维曲线的插值。这些类允许你定义一条B样条曲线&#xff0c;这条曲线将精确地通过…

内网安全:反弹shell

目录 一.Netcat反弹Shell 二.PowerCat反弹Shell PowerCat和nc正向连接 PowerCat和nc反向连接 PowerCat和PowerCat反向连接 三.Bash反弹shell 四.Python 反弹Shell 一.Netcat反弹Shell 在Windows容易被杀 介绍&#xff1a; Netcat简称NC,是一个简单、可靠的网络工具,被…

0V企业级别通配符证书

OV企业级别通配符证书&#xff0c;支持顶级域名下面的所有二级子域名&#xff0c;不限制二级子域名个数&#xff0c;证书显示单位实名名称。 加密算法支持2048bits&#xff1b;签名算法支持SHA256withRSA。 可提供各种服务器的证书文件安装格式。 加密支持协议&#xff1a;T…

微信如何转发群消息给其他群或其他好友?

使用微加机器人将群消息转发到其他群或好友 工具选择&#xff1a; 近期想做一个从某个微信群将消息自动转发到另一个微信群的效果&#xff08;一些课程群和线报群只有付费才能进&#xff09; 试了市面上很多免费的转发软件&#xff0c;发现免费还是很难有好东西&#xff0c;…