Practice01-Qt6.0设置文本颜色、格式等。

Qt6.0学习,在此做个记录,方便日后查找复习

本次项目用到的控件有:复选框,单选按钮。文本编辑框。

项目目录结构:

项目运行效果图:

实现的功能:

勾选Underline、Italic,Bold时,下方的文本会添加下划线,斜体,加粗,取消勾选时,格式设置失效

勾选其中任意一个颜色的时候,文本会对应的设置成相应的颜色。

untitled.pro:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui
RC_ICONS = bbb.ico  #设置应用图标

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin  #‘##{TARGET}’表示替换函数,表示用TARGET变量的值替换。
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Test_Widget; }  //定义一个命名空间,包含一个类Test_Widget,此处的类是UI界面的类。
QT_END_NAMESPACE

class Test_Widget : public QWidget  //定义一个继承自QWidget类的Test_Widget类,这个名字和ui界面中窗口的objectname相同。此类就是实现交互业务逻辑的类。
{
    Q_OBJECT  //插入的一个宏,表示Test_Widget类就可以使用信号与槽、属性等功能。

public:
    Test_Widget(QWidget *parent = nullptr);  //定义构造函数,构造函数名称和类名相同
    ~Test_Widget();

private slots:
    void setBlodFont();  //设置字体为粗体
    void setItalicFont();  //设置字体为斜体
    void setUnderlineFont();  //为文本添加下划线

    void setFontColor();            //设置字体颜色

private:
    Ui::Test_Widget *ui;  //定义一个指针对象。指向窗口界面,可由此调用窗口界面的控件。
};
#endif // WIDGET_H

 main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Test_Widget w;  //定义并创建窗口对象。
    w.show();       //显示窗口
    return a.exec();   //运行应用程序,开始应用程序的消息循环和事件处理。
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"

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

    //connect,将信号与槽函数绑定,第一个参数是信号发出者,第二个是发出的信号,第三个是当前窗口对象,第四个是槽函数,就是接收信号的函数,对信号进行响应。
    //connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(pushButton_2_clicked()));
    connect(ui->checkBox_bold,SIGNAL(clicked(bool)),this,SLOT(setBlodFont()));
    connect(ui->checkBox_italic,SIGNAL(clicked(bool)),this,SLOT(setItalicFont()));
    connect(ui->checkBox_underline,SIGNAL(clicked(bool)),this,SLOT(setUnderlineFont()));

    connect(ui->radioButton_black,SIGNAL(clicked(bool)),this,SLOT(setFontColor()));
    connect(ui->radioButton_blue,SIGNAL(clicked(bool)),this,SLOT(setFontColor()));
    connect(ui->radioButton_red,SIGNAL(clicked(bool)),this,SLOT(setFontColor()));
}

Test_Widget::~Test_Widget()  //析构函数,用于销毁对象。
{
    delete ui;
}

//设置字体为粗体
void Test_Widget::setBlodFont()
{
    if (ui->checkBox_bold->checkState())  //判断复选框的状态,如果是选中的,则将字体设置为粗体,否则取消设置粗体。
    {
        QFont font = ui->plainTextEdit->font();
        font.setBold(true);
        ui->plainTextEdit->setFont(font);
    }else{
        QFont font = ui->plainTextEdit->font();
        font.setBold(false);
        ui->plainTextEdit->setFont(font);
    }

}
//复选框信息响应槽函数,对字体进行斜体设置或者取消设置
void Test_Widget::setItalicFont()
{
    if(ui->checkBox_italic->checkState())
    {
        QFont font = ui->plainTextEdit->font();
        font.setItalic(true);
        ui->plainTextEdit->setFont(font);
    }else{
        QFont font = ui->plainTextEdit->font();
        font.setItalic(false);
        ui->plainTextEdit->setFont(font);
    }
}
//为文本添加下划线
void Test_Widget::setUnderlineFont()
{
    if(ui->checkBox_underline->checkState())
    {
        QFont font = ui->plainTextEdit->font();
        font.setUnderline(true);
        ui->plainTextEdit->setFont(font);
    }else{
        QFont font = ui->plainTextEdit->font();
        font.setUnderline(false);
        ui->plainTextEdit->setFont(font);
    }
}
//设置字体红色。
void Test_Widget::setFontColor()
{
    QPalette pt = ui->plainTextEdit->palette();
    if(ui->radioButton_red->isChecked())
    {
        pt.setColor(QPalette::Text,Qt::red);
    }else if(ui->radioButton_blue->isChecked())
    {
        pt.setColor(QPalette::Text,Qt::blue);
    }else if(ui->radioButton_black->isChecked())
    {
        pt.setColor(QPalette::Text,Qt::black);
    }else{
        pt.setColor(QPalette::Text,Qt::black);
    }
    ui->plainTextEdit->setPalette(pt);
}

主要的逻辑代码在widget.cpp文件中,没有使用快捷方式为按钮添加槽函数,而是使用connect()手写了信号和槽函数的绑定

勾选字体格式复选框和取消勾选是在一个槽函数中进行判断复选框是否勾选,如果勾选了则设置字体格式,如果判断取消勾选则设置字体格式失效。

参考书本《Qt6 C++开发指南》。

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

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

相关文章

Git 进阶使用

一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中&#xff0c;它通常用于管理和操作版本控制系统&#xff08;如Git、SVN等&#xff09;以及代码开发环境&#xff08;如IDE&#xff09;。与…

Ruoyi框架开发项目(宝藏干货)

若依勾选框导出数据 效果图&#xff1a; package com.ruoyi.web.controller.school;import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.pag…

木板上的蚂蚁(c++题解)

题目描述 有一块木板&#xff0c;长度为 n 个 单位 。一些蚂蚁在木板上移动&#xff0c;每只蚂蚁都以 每秒一个单位 的速度移动。其中&#xff0c;一部分蚂蚁向 左 移动&#xff0c;其他蚂蚁向 右 移动。 当两只向 不同 方向移动的蚂蚁在某个点相遇时&#xff0c;它们会同时改…

【数据结构】深度剖析ArrayList

目录 ArrayLIst介绍 ArrayList实现的接口有哪些&#xff1f; ArrayList的序列化&#xff1a;实现Serializable接口 serialVersionUID 有什么用? 为什么一定要实现Serialzable才能被序列化&#xff1f; transient关键字 为什么ArrayList中的elementData会被transient修…

酷柚易汛ERP - 计量单位操作指南

1、应用场景 计量单位支持单单位和多单位管理&#xff0c;单位是开单时确定商品价格的主要计量维度。 2、主要操作 2.1 新增多单位 打开【资料】-【计量单位】点击新增 录入基本单位和副单位 ① 基本单位&#xff1a;最小单位 ② 副单位&#xff1a;多单位里的大单位 ③ …

【神经网络】GAN:生成对抗网络

GAN&#xff1a;生成对抗网络 Generator&#xff08;生成器&#xff09;概念 和传统的神经网络不同&#xff0c;Generator除了接受x的输入之外&#xff0c;还会接受一个简单的分布作为z进行输入&#xff0c;从而使得网络的输出也是一个复杂的分布 为什么输出需要时一个分布呢…

【华为HCIP | 华为数通工程师】IPV4与IPV6 高频题(1)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

jQuery实现二级菜单

jQuery怎么实现二级菜单呢&#xff1f;让我为大家演示一个例子&#xff01; 上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><style>* {margin: 0;padding: …

耗时3年写了一本数据结构与算法pdf!开源了

前言 大家好&#xff0c;我是bigsai&#xff0c;很早就在写博客&#xff0c;我将csdn的文章整理成了一个pdf&#xff0c;并且开源到github上&#xff01; 自己写东西断断续续也不少时间了&#xff0c;也写了不少东西(虽然是偏向小白)&#xff0c;这个其实花费的时间还是比较多…

ENVI IDL:如何解析XML文件(以Landsat9-MTL.xml文件为例)

01 前言 我们原本是打算对Landsat9文件进行辐射定标&#xff0c;但是辐射定标的参数在MTL文件中&#xff0c;从文件中查看参数直接复制到IDL中固然可行&#xff0c;但是当我们对Landsat9文件进行批量辐射定标时&#xff0c;这种方法就将失效了。因此我们需要自动从MTL文件中读…

一个轻量级 Java 权限认证框架——Sa-Token

一、框架介绍 Sa-Token 是一个轻量级 Java 权限认证框架&#xff0c;主要解决&#xff1a;登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 官网文档: https://sa-token.cc/doc.html 二、Spring Boot 集成Sa-Token 2.1、…

keil仿真错误:*** error 65: access violation at 0x40021000 : no ‘write‘ permission

按下图打开&#xff1a; 进行修改&#xff1a; 我用的芯片是:STM32F103C8T6 开始仿真&#xff1a; 成功解决不能仿真问题

mongodb导出聚合查询的数据

❗️❗️❗️在正文之前先要讲一个坑&#xff0c;就是mongoexport这个命令工具不支持导出聚合查询的数据&#xff0c;比如通过某某字段来分组 我查了一天关于mongoexport怎么来导出聚合查询的结果集&#xff0c;最终还是gpt给了我答案 &#x1f62d; 既然mongoexport不支持&…

1.微服务与SpringCloud

微服务和SpringCloud 文章目录 微服务和SpringCloud1.什么是微服务2.SpringCloud3. 微服务 VS SpringCloud4. SpringCloud 组件5.参考文档6.版本要求 1.什么是微服务 微服务是将一个大型的、单一的应用程序拆分成多个小型服务&#xff0c;每个服务实现特定的业务功能&#xff…

redis主从复制+哨兵

1.主从复制 redis配置文件redis.conf master机器&#xff1a;IP 192.168.1.5 &#xff0c;端口 6379 设置配置参数 daemonize yes #bind 127.0.0.1 -::1 protected-mode no port 6379 dbfilename "dump.rdb" dir "/root/redis/my_redis_conf/dumpdir" l…

leetcode刷题日记:110. Balanced Binary Tree(平衡二叉树)

题目给了我们一个二叉树要让我们来判断这一个二叉树是不是平衡二叉树。 要想判断一棵树是不是平衡二叉树&#xff0c;我们得首先知道平衡二叉树的定义是什么&#xff0c;平衡二叉树指的是这样的树它的左子树的高度与右子树高度的差的绝对值不能超过1&#xff0c;而且它的左子树…

酷柚易汛ERP-客户管理操作指南

1、应用场景 对客户信息进行管理&#xff0c;可新增客户、设置客户等级、联系人信息、银行账户和销售人员等信息&#xff0c;方便开单时自动匹配销售信息。 2、主要操作 2.1 新增客户 打开【资料】-【客户管理】&#xff0c;点击【新增】。 在页面输入客户信息、联系人地址…

Servlet作业小练习

一.题目 利用JavaBean实现用户类&#xff0c;包含姓名、性别、爱好&#xff0c;爱好需要用多选框 实现表单1进行获取数据&#xff0c;表单2显示获取结果。 利用Servlet实现逻辑代码 二.实现效果 三.具体实现 1.User实体类 package com.hjj.pojo;/*** author:嘉佳 Date:20…

Auto-Encoder学习笔记

写在前面 本篇博客是本人在学习李宏毅老师的《机器学习》课程中的Auto-Encoder时&#xff0c;记录的相关笔记&#xff0c;由于只记录了我认为相对重要的部分&#xff0c;所以可能有未记录的部分。博客中的图片来自于教学视频中的截图&#xff0c;视频资源地址为&#xff1a;传…

【面试经典150 | 位运算】位1的个数

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;循环检查二进制位方法二&#xff1a;位运算优化方法三&#xff1a;__builtin_popcount() 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…