Qt配置设置,修改全文字体大小颜色,背景颜色

2023-10-29

这是完成时的demo,选择所需。 点击确认修改,全局修改,效果第二张图。

在没有点击确认修改时,字体等按钮的改变只会在文本框里面体现出来。点击确认才会修改全局的东西。点击恢复默认时,字体字号颜色控件全部恢复初始状态,当点击确认修改,全局才会改为初始状态。

 在ui界面进行设置,字体fontComboBox控件,字号comboBox控件,字体/背景颜色toolButton控件(设置按钮图片背景在icon,再下一张图片),文本框textBrowser控件。设置好布局,给他们取名字。

 

代码

//styleconfig.h 头文件内容

#ifndef STYLECONFIG_H
#define STYLECONFIG_H

#include <QWidget>
#include <QDebug>

#include <QApplication>
#include <QColorDialog>

namespace Ui {
class StyleConfig;
}

class StyleConfig : public QWidget
{
    Q_OBJECT

public:
    explicit StyleConfig(QWidget *parent = nullptr);
    ~StyleConfig();

    QColor font_color;  //全局变量,字体颜色
    QFont s_font;   //全局变量,字体类型
    double font_size;   //全局变量,字体大小

    //全局变量,背景颜色
    int color_red;
    int color_blue;
    int color_green;
    //全局变量,字体颜色
    int font_red;
    int font_blue;
    int font_green;

    //修改前的样式
    void StyleNormal();

    //修改后的样式demo
    void StyleDemo();

private slots:
    void on_pushButton_default_clicked();     //恢复默认设置

    void on_pushButton_3_clicked();     //确认修改全局字体样式,背景样式

signals:
    void changeAllFont(QString, double, int, int, int);    //发送信号,修改全局字体
    void changeBckgColor(int, int, int);    //发送信号,修改背景颜色

private:
    Ui::StyleConfig *ui;
};

#endif // STYLECONFIG_H
//styleconfig.cpp cpp文件内容

#include "styleconfig.h"
#include "ui_styleconfig.h"

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

    StyleNormal();  //修改前的样式

    //字体
    connect(ui->fontComboBox, &QFontComboBox::currentFontChanged, [=](const QFont &font)
    {
        StyleNormal();  //修改前的样式
        s_font = font;
        ui->textBrowser_style->setCurrentFont(s_font);
        QApplication::setFont(s_font);
        StyleDemo();    //修改后的样式
    });

    //字号
    void(QComboBox:: *cbsignal)(const QString &text) = &QComboBox::currentIndexChanged;
    connect(ui->comboBox, cbsignal, [=](const QString &text)
    {
        StyleNormal();  //修改前的样式
        font_size = text.toDouble();
        ui->textBrowser_style->setFontPointSize(font_size);
        StyleDemo();    //修改后的样式
    });

    //设置字体颜色
    connect(ui->toolButton_color, &QToolButton::clicked, [=]()
    {
        StyleNormal();  //修改前的样式
        QColor color = QColorDialog::getColor(Qt::blue);
        font_color = color;     //设置字体为所选
        font_red = color.red();
        font_green = color.green();
        font_blue = color.blue();
        //ui->textBrowser_style->setTextColor(color);         //设置为所选颜色
        StyleDemo();    //修改后的样式

        //设置按钮颜色,并且提示信息为颜色元素
        if(color.name() == "#000000")
        {
            ui->toolButton_color->setStyleSheet("");       //使用color的name()方法,获取颜色值
            ui->toolButton_color->setToolTip("选择颜色");
        }
        else
        {
            ui->toolButton_color->setStyleSheet(tr("background-color:%1").arg(color.name()));       //使用color的name()方法,获取颜色值
            ui->toolButton_color->setToolTip(QString("rgba:(%1, %2, %3)").arg(color.red()).arg(color.green()).arg(color.blue()));
        }
    });

    //设置背景颜色
    connect(ui->toolButton_fill_color, &QToolButton::clicked, [=]()
    {
        StyleNormal();  //修改前的样式
        QColor color = QColorDialog::getColor(Qt::blue);
        color_red = color.red();
        color_green = color.green();
        color_blue = color.blue();
        ui->textBrowser_style->setStyleSheet(tr("background-color: %1").arg(color.name()));  //设置背景为所选颜色
        StyleDemo();    //修改后的样式

        //设置按钮颜色,并且提示信息为颜色元素
        if(color.name() == "#000000")
        {   //字体颜色为黑色,则填充颜色和背景颜色均无
            ui->textBrowser_style->setStyleSheet("");    //修改前的样式
            ui->toolButton_fill_color->setStyleSheet("");       //使用color的name()方法,获取颜色值
            ui->toolButton_fill_color->setToolTip("选择颜色");
        }
        else
        {
            ui->toolButton_fill_color->setStyleSheet(tr("background-color:%1").arg(color.name()));       //使用color的name()方法,获取颜色值
            ui->toolButton_fill_color->setToolTip(QString("rgb:(%1, %2, %3)").arg(color.red()).arg(color.green()).arg(color.blue()));
        }
    });

}

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

//修改前的样式
void StyleConfig::StyleNormal()
{
    ui->textBrowser_style->clear();
    ui->textBrowser_style->setCurrentFont(QFont("SimSun"));    //宋体:SimSun
    ui->textBrowser_style->setFontPointSize(14);        //字体大小默认14
    ui->textBrowser_style->setTextColor(Qt::black);     //字体颜色为黑色
    ui->textBrowser_style->append("\n 这是未修改前的样式 This is the style before modification \n");
}

//修改后的样式demo
void StyleConfig::StyleDemo()
{
    ui->textBrowser_style->setFocus();       //光标位置
    ui->textBrowser_style->setCurrentFont(ui->fontComboBox->currentFont());    //字体
    ui->textBrowser_style->setFontPointSize(ui->comboBox->currentText().toDouble());    //字体大小
    ui->textBrowser_style->setTextColor(font_color);    //设置字体为所选颜色
    ui->textBrowser_style->append(" 这是修改后的样式 This is the modified style \n");
}

//恢复默认设置
void StyleConfig::on_pushButton_default_clicked()
{
    //ui->textBrowser_style->append("恢复默认设置");
    color_red = 0;
    color_green = 0;
    color_blue = 0;
    font_red = 0;
    font_green = 0;
    font_blue = 0;
    s_font = QFont("SimSun");    //字体
    font_size = 15;    //字体大小
    ui->comboBox->setCurrentText("14");
    ui->fontComboBox->setCurrentFont(QFont("SimSun"));
    StyleNormal();   //修改前的样式
    ui->textBrowser_style->setStyleSheet("");    //背景颜色为修改前的样式
    ui->toolButton_color->setStyleSheet("");       //则选择背景按钮的填充颜色无
    ui->toolButton_color->setToolTip("选择颜色");
    ui->toolButton_fill_color->setStyleSheet("");       //则选择字体按钮填充颜色无
    ui->toolButton_fill_color->setToolTip("选择颜色");
}


//确认修改全局字体样式,背景样式
void StyleConfig::on_pushButton_3_clicked()
{
    // s_font.family()为字体
    emit changeAllFont(s_font.family(), font_size, font_red, font_green, font_blue);  //字体样式
    emit changeBckgColor(color_red, color_green, color_blue);     //背景颜色
}
    //我是设置好,点击发送,在mainwindow.cpp里面接收信号,再进行全文处理。

    //配置 设置tabWidget全局字体样式, 字体,字体大小,颜色
    connect(ui->widget_777, &StyleConfig::changeAllFont, [=](QString setfont, double font_size, int red, int green, int blue)
    { 
        ui->tabWidget->setStyleSheet(QString("font-size:%1px; color:rgb(%2, %3, %4); font-family:'%5';")
                                     .arg(font_size).arg(red).arg(green).arg(blue).arg(setfont));
    });



    //配置 设置MainWindow背景颜色
    connect(ui->widget_777, &StyleConfig::changeBckgColor, [=](int red, int green, int blue)
    {
        if(red == 0 && green == 0 && blue == 0)
        {   //如果为黑色,则设为默认格式即背景色为初始状态
            this->setStyleSheet(QString("#MainWindow{background-color: }"));
        }
        else
        {
            //ui->tabWidget->setStyleSheet(QString(QString("background-color: rgb(%1, %2, %3)").arg(red).arg(green).arg(blue)));    //修改tabWidget的背景颜色
            this->setStyleSheet(QString(QString("#MainWindow{background-color: rgb(%1, %2, %3)}").arg(red).arg(green).arg(blue)));    //指定修改MainWindow的背景颜色
        }

    });

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt配置设置,修改全文字体大小颜色,背景颜色 的相关文章

  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • Qt:将数字转换为 QString、QVariant 或 QString::number 哪个更好

    我只是好奇 比方说 我需要在控制台中输出一个数字 代码是 include
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • Qt 5.3 QPlainTextEdit 更改 QTextCursor 颜色

    我想更改下面的光标颜色QPlainTextEdit小部件 我能够将其宽度设置为6 但我想改变颜色或者它 是否可以 QFontMetrics fm font setCursorWidth fm averageCharWidth setCurs
  • QtCreator:找不到有效的套件

    在 Windows 7 上仅安装了 IDE 我想创建一个纯 C 项目 非 QT 项目 但是我收到错误 未找到有效的套件 当我单击 选项 gt 套件 时 我看到桌面 默认 套件 并且没有显示任何错误 我收到错误是因为我没有安装 Qt 库吗 如
  • 从 QWebEngineView 或 QWebEnginePage 中删除滚动条

    有没有办法删除滚动条QWebEngineView或者我可以以某种方式访问 它的 ScrollArea 吗 使用 webkit 就这么简单 WebView gt page gt setScrollBarPolicy Qt Vertical Q
  • 使用 CMake 时出现 Qt moc 错误

    我正在尝试编写一个 OpenCV 应用程序 使用 Qt 创建 GUI 并使用 CMake 生成 makefile 我遇到的问题是 当我尝试执行make命令 我收到错误 该文件是使用 5 2 1 中的 moc 生成的 它不能与此版本的 Qt
  • QComboBox:仅在展开时显示图标

    从 正常 开始QCombobox 我想要一个QCombobox仅在展开时显示图标 但在折叠时不显示图标 我找到了类似问题的几个答案 但它们都显示了更复杂情况的代码 而我还没有设法提炼出它的核心 我见过两种方法 QListView或使用QIt
  • 仅使 QTreeWidgetItem 的一列可编辑

    我有一个QTreeWidgetItem有两列数据 有什么办法可以只让第二列可编辑吗 当我执行以下操作时 QTreeWidgetItem item new QTreeWidgetItem item gt setFlags item gt fl
  • QDateTime::fromstring( __DATE__, "MMM d yyyy") 返回无效

    解析MSVC 预定义 DATE 也许结合 TIME 宏与 QDateTime fromstring 不返回任何内容 无效的 QDateTime 对象 为什么 From http msdn microsoft com en us librar
  • 无法在 Qt Creator 中检索调试输出

    在 Windows 上的 Qt Creator 中 qDebug 语句不起作用 并且输出窗口中出现以下消息 无法检索调试输出 如何解决 如果多个 Qt Creator 实例处于活动状态 则可能会出现此问题 要解决此问题 只需关闭 Qt Cr
  • 用Qt制作无边框窗口

    我是 Qt C 新手 我下载了最新的 Windows 版本 做了一些教程 非常棒 我看到了 Qt 框架具有的一些样式选项 而且它很棒 但现在我需要构建我的应用程序 其主窗口 形式 是用没有矩形边框 无边框 的图像设计 蒙皮的 我怎样才能用Q
  • 超越堆栈采样:C++ 分析器

    黑客的故事 日期是 2010 年 2 月 12 日 圣诞节前的日子已经过去了 作为一名 Windows 程序员 我几乎遇到了一个主要障碍 我一直在使用 AQTime 我尝试过 sleepy shiny very sleepy 就在我们说话的
  • Row 和 RowLayout 有什么区别?

    这按预期工作Row 但不与RowLayout 为什么 两者有什么区别 ApplicationWindow title Testing width 640 height 480 RowLayout Row anchors fill paren
  • 如何禁用滚轮事件 QGraphicsView Qt C++ 上的滚动功能

    我有一个图形视图 并且我设置了自己的功能 以便在用户按下 Control 并单击鼠标时手动拖动滚动 我已经删除了滚动条 但鼠标滚轮仍然会滚动 甚至滚动到显示在图像中的图像qGraphicsView显示我的手拖动没有的空白 白色 空间 我怎样
  • 交叉引用标头中出现“未终止条件指令”错误

    有两个类在其标头中彼此相关 绘图标记 ifndef PLOTMARKER H define PLOTMARKER H include
  • 如何将 qmake 转换为 cmake?

    我有一个 pro我的项目上的文件 但现在我想将其移植到CMakeLists txt文件 我怎样才能做到这一点 QT core QT gui CONFIG c 11 TARGET test CONFIG console CONFIG app

随机推荐

  • map和set的概念及使用

    1 什么是关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是
  • 新天龙官网服务器更新消息,《新天龙八部》1月20日全服更新维护公告

    亲爱的玩家 大家好 为保证游戏运行的稳定性 提升整体服务质量 新天龙八部 游戏全部服务器 除测试服务器外 将于2020年1月20日7 00 9 00进行更新维护 维护后版本号升级为3 66 5201 如果在预定时间内无法完成维护内容 开机时
  • AcWing 420. 火星人

    人类终于登上了火星的土地并且见到了神秘的火星人 人类和火星人都无法理解对方的语言 但是我们的科学家发明了一种用数字交流的方法 这种交流方法是这样的 首先 火星人把一个非常大的数字告诉人类科学家 科学家破解这个数字的含义后 再把一个很小的数字
  • 多源迁移学习网络补充知识用于具有不可见故障的机器智能诊断

    摘要 当前基于深度迁移学习的故障诊断的大多数成功需要两个假设 1 源机器的健康状态集合应当与目标机器的健康状态集合重叠 2 目标机器样本的数量跨健康状态平衡 然而 这样的假设在工程场景中是不现实的 其中目标机器遭受在源机器中看不到的故障类型
  • 华硕主板已经开启VT-D虚拟化,但是进了win10还是CPU显示Hyper-V显示已禁用

    最近X宝看i5 8400的便宜好几百大洋 就入手一台当家里照片文档FTP服务器 系统win10装好 常用软件安装完成 准备来安装Hyper V了 在 程序和功能 里面的 Hyper V的虚拟机监控程序 是灰色的 老司机了 这难不倒我 一般都
  • CmakeList--gflags

    set GFLAGS LIBRARIES usr lib x86 64 linux gnu libgflags so
  • vue-cli3+electron出现白屏现象

    近期使用electron vue cli3 0开发了一个跨平台项目 进行登录后路由跳转出现白屏现象 原因在于路由使用了history模式 history模式在electron环境中会出现 路由跳转的白屏现象 因此 需要将histroy模式修
  • deepin自带wine使用方法_忘记Windows!国产深度v20正式版来袭,永久免费使用!

    最近win10系统更新出现各种bug 真是让人头痛 但是 就在我们在win10漩涡中晕头转向的时候 很多朋友都没有留意到 我们的国产操作系统 deepin 20正式版 在9月份已经正式发布 而直至10月份 距离deepin 20正式版发布一
  • Python实现邮箱自动发送代码(包含正文图片、附件文件)

    以下为源码 仅供大家学习 抄送实现是同一封邮件发送2次 如想实现发送人和抄送人显示中文名字 在list集合中添加中文名字即可 旭旭同学测试 lt 12341324 qq com gt 测试 lt 1341 qq com gt 不足之处请大家
  • Qt 多线程/多窗口 参数传递

    文章目录 注意 传递 Qt 支持的数据类型 主线程 gt 子线程 子线程 gt 主线程 主窗口 gt 子窗口 子窗口 gt 主窗口 传递自己定义的数据类型 第一步 定义数据类型 第二步 在 main 函数中注册该数据类型 第三步 开始传参数
  • 博客同时部署Github和Coding page

    前期 注册账号不讲了 现在都是以团队注册 注册完后 记得到团队设置里面 找到实名认证 在初次使用静态网站服务前 需要团队拥有者完成实名认证 然后需要在个人设置里绑定邮箱和设置密码 顺便把公钥添加下 创建一个项目 然后点进这个项目中 部署静态
  • phpstorm 配置apache路径

    初学php 如何自动将phpstorm中的文件部署到设定好的目录中 用了 我的路径是apache里面配置的路径ServerRoot
  • CentOS 7二进制文件安装nodejs

    根据自己的经验编写在linux系统CentOS下安装nodejs的过程 本篇介绍二进制文件直接解压安装的过程 方法 步骤 1 如图所示 在nodejs官网下载压缩包 根据自己的系统是32位还是64位选择压缩包 别选错类型哦 2 安装前要先安
  • sklearn——加载数据集

    1 通用数据集 API 根据所需数据集的类型 有三种主要类型的数据集API接口可用于获取数据集 方法一 loaders 可用来加载小的标准数据集 在玩具数据集中有介绍 方法二 fetchers 可用来下载并加载大的真实数据集 在真实世界中的
  • 无法生成“F:\system voiume information”下的常规文件夹列表拒绝访问

    1 产生问题 将桌面从属性 位置直接改到了F盘 F盘上的东西全显示在桌面上 2 解决问题 1 点击还原默认值后显示要下图 选择否 win10可以用 然后再次移动到你需要的位置即可 2 win7可以用 win10并没有用成 1 按win r
  • 图的创建和遍历

    图的定义 由顶点的有穷非空集合和顶点之间边的集合组成的数据类型 图的表示 G V E G表示一个图 V是图G的顶点集合 E为图G的边的集合 图的逻辑结构 多对多 图的存储结构 邻接矩阵 邻接表 十字链表 邻接多重表 图的一些无聊术语 顶点i
  • 多源bfs

    这是 LeetCode 上的 1162 地图分析 难度为 中等 与 单源最短路 不同 多源最短路 问题是求从 多个源点 到达 一个 多个汇点 的最短路径 在实现上 最核心的搜索部分 多源 BFS 与 单源 BFS 并无区别 并且通过建立 虚
  • 日常管理的五条小建议

    原文作者 Johanna Rothman著作 门后的秘密 卓越管理的故事 有时候 你需要为工作理一理头绪 你需要给自己一些喘息的机会 停下来 思考一会儿 这里有一些小建议 可以帮助你处理好日常管理工作 计划并安排一对一会谈 做管理意味着你要
  • 基于Hadoop的Knn算法实现

    Knn算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别 则该样本也属于这个类别 并具有这个类别上样本的特性 该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别 Knn方法在类
  • Qt配置设置,修改全文字体大小颜色,背景颜色

    这是完成时的demo 选择所需 点击确认修改 全局修改 效果第二张图 在没有点击确认修改时 字体等按钮的改变只会在文本框里面体现出来 点击确认才会修改全局的东西 点击恢复默认时 字体字号颜色控件全部恢复初始状态 当点击确认修改 全局才会改为