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

news2025/6/15 19:36:23

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.coloradmin.cn/o/1197055.html

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

相关文章

BUUCTF——刮开有奖

打开程序&#xff1a; 就一个这个玩意儿&#xff0c;没有输入框&#xff0c;没有啥的&#xff0c;打开IDA反编译一下&#xff1a; 直接找到WinMain&#xff0c;发现里面只有一个对话框API&#xff08;如果只有一个对话框&#xff0c;那真就没有输入框了&#xff09;&#xff0…

人工智能基础——Python:Matplotlib与绘图设计

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

Android---屏幕适配的处理技巧

在几年前&#xff0c;屏幕适配一直是困扰 Android 开发工程师的一大问题。但是随着近几年各种屏幕适配方案的诞生&#xff0c;以及谷歌各种适配控件的推出&#xff0c;屏幕适配也显得越来越容易。下面&#xff0c;我们就来总结一下关于屏幕适配的那些技巧。 ConstraintLayout …

【数据结构】二叉树经典例题---<你真的掌握二叉树了吗?>(第一弹)

一、已知一颗二叉树如下图&#xff0c;试求&#xff1a; (1)该二叉树前序、中序和后序遍历的结果。 (2)该二叉树是否为满二叉树&#xff1f;是否为完全二叉树&#xff1f; (3)将它转换成对应的树或森林。 (4)这颗二叉树的深度为多少? (5)试对该二叉树进行前序线索化。 (6)试对…

向量的点积和外积

参考&#xff1a;https://www.cnblogs.com/gxcdream/p/7597865.html 一、向量的内积&#xff08;点乘&#xff09; 定义&#xff1a; 两个向量a与b的内积为 ab |a||b|cos∠(a, b)&#xff0c;特别地&#xff0c;0a a0 0&#xff1b;若a&#xff0c;b是非零向量&#xff0c;…

Shopee收款账户怎么设置?shopee收款方式选哪种

Shopee作为一家领先的电子商务平台&#xff0c;为卖家提供了多种收款方式。无论是在线支付、虚拟账户余额还是线下支付&#xff0c;卖家可以根据自己的需求和交易情况来进行选择。然而&#xff0c;在选择收款方式时&#xff0c;安全性、便捷性和市场适应性是需要考虑虾皮Shopee…

【Git】Git的GUI图形化工具ssh协议IDEA集成Git

一、GIT的GUI图形化工具 1、介绍 Git自带的GUI工具&#xff0c;主界面中各个按钮的意思基本与界面文字一致&#xff0c;与git的命令差别不大。在了解自己所做的操作情况下&#xff0c;各个功能点开看下就知道是怎么操作的。即使不了解&#xff0c;只要不做push操作&#xff0c;…

【数据结构】顺序表 | 详细讲解

在计算机中主要有两种基本的存储结构用于存放线性表&#xff1a;顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构&#xff0c;指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的&#xf…

Activiti BPMN visualizer Using Of Idear

Launch 安装插件 创建文件 可视化创建按钮 设置条件,是在线上设置的

【C++破局】C++内存管理之new与deleted剖析

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c内存管理部分知识点梳理 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;花有重开日&#xff0c;人无再少年&#xff01; 目录 C/C的内存分配机…

Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model

前言 持续学习总结输出中&#xff0c;Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model 概念&#xff1a;指令&#xff08;Directives&#xff09;是Vue提供的带有 v- 前缀 的特殊标签属性。可以提高操作 DOM 的效率。 vue 中的指令按照不…

Java Web——HTTP协议

目录 1. HTTP协议概述 1.1. HTTP数据传输格式 1.2. HTTP协议特点 2. HTTP 1.0和HTTP 1.1 3. HTTP请求协议 3.1. GET方式请求协议 3.2. POST方式请求协议 3.3. GET请求和POST请求的区别 4. HTTP相应协议 4.1. 响应状态码 如果两个国家进行会晤需要遵守一定的礼节。所以…

WMS配送中心主要业务流程

业务流程图 入库 波次出库 按门店和门店所属送货路线确定出库波次 入库 出库 移库、封仓 门店欠货能要点 1. 日常补货&#xff1a;分拣仓位商品小于当前商品在该位置的补货下限的时候&#xff1b;生成对此进行补货任务&#xff1b;补货完成后确认任务&#xff0c;系统变更库存…

win10使用mingw安装OpenCV4.8

1. cmake安装 下载链接如下https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip 解压后放到指定目录后&#xff0c;添加bin目录到环境变量即可。 2. mingw安装 下载链接如下(下图的x86_64-posix-sjlj)&#xff1a; Download x86_…

DevChat:提升编程效率的AI编程助手

一、前言 1、当前开发的痛点&#x1f616; 在软件开发过程中&#xff0c;开发者经常需要编写复杂的代码&#xff0c;如数据结构、算法、网络通信等&#xff0c;这些都需要耗费大量的时间和精力。同时&#xff0c;不同的编程语言和框架也会给开发者带来许多不便&#xff0c;例如…

Hadoop入门——数据分析基本步骤

文章目录 1.概述2.分析步骤2.1第一步 明确分析目的和思路2.2第二步 数据收集2.3第三步 数据处理2.4第四步 数据分析2.5第五步 数据展现2.6第六步 报告撰写 3.总结 1.概述 2.分析步骤 2.1第一步 明确分析目的和思路 2.2第二步 数据收集 2.3第三步 数据处理 2.4第四步 数据分析 …

C语言每日一题(28) 反转链表

牛客网 BM1 反转链表 题目描述 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤1000 要求&#xff1a;空间复…

数据分析实战 | SVM算法——病例自动诊断分析

目录 一、数据分析及对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型应用及评价 一、数据分析及对象 CSV文件——“bc_data.csv” 数据集链接&#xff1a;https://download.csdn.net/download/m0_70452407/88…

【C++】智能指针(一)

这篇文章介绍下C的智能指针&#xff0c;当然&#xff0c;可能没有你想的那么智能。 为什么需要智能指针1 void remodel(string& str) {string* ps new string(str);str *ps;return; }这里不讨论这个函数有没有意义&#xff0c;在这段代码中&#xff0c;很明显&#xff…

arduino 简易智能花盆

编辑器&#xff1a;arduino IDE 主板&#xff1a;arduino uno 传感器&#xff1a; 0.96寸的OLED屏&#xff08;四脚&#xff09; 声音模块 土壤温湿度模块 DS18B20温度模块&#xff08;这里用到防水的&#xff09; 光敏电阻模块&#xff08;买成三脚的了只能显示高低&#x…