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

这是完成时的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的背景颜色
        }

    });

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,设置QTableView的表头字体颜色背景颜色可以通过继承自`QStyledItemDelegate`并重写其相关方法来实现。这里是一个简单的示例: 首先,你需要创建一个自定义的样式委托(CustomDelegate),例如`MyDelegate`: ```cpp class MyDelegate : public QStyledItemDelegate { public: explicit MyDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {} // 重写 paintSection() 方法设置背景颜色 void paintSection(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override { if (index.column() == 0) { // 假设你想要改变第一列的样式 painter->fillRect(option.rect, QColor(Qt::lightGray)); // 设置背景色 } // 重写 paintText() 方法设置文本颜色 QStyledItemDelegate::paintText(painter, option, index); } // 可选:如果想设置特定文字的颜色,可以在paintText()中进行修改 void paintText(QPainter *painter, const QStyleOptionViewItem &option, const QString &text, int column, int row) const override { if (column == 0) painter->setPen(Qt::red); // 设置字体颜色为红色 QStyledItemDelegate::paintText(painter, option, text, column, row); } }; ``` 然后,在你的`QMainWindow`或`QWidget`的实例中使用这个自定义委托: ```cpp QTableView *tableView = new QTableView(this); MyDelegate *delegate = new MyDelegate(this); tableView->setItemDelegate(delegate); // 如果你想改变所有表头单元格的样式 tableView->horizontalHeader()->setDefaultSectionSize(100); // 设置宽度 tableView->horizontalHeader()->setFont(QFont("Arial", 12)); // 设置字体 tableView->horizontalHeader()->setStyleSheet("background-color: lightgray; color: red;"); // 直接设置样式 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值