QPalette与QFont

本文详细介绍了在Qt中如何通过私有槽函数实现文本框内字体和颜色的动态更改,包括设置字体颜色、黑体、斜体和下划线等功能。探讨了字体属性叠加的问题及解决方案,以及QPalette类在控件颜色管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现如下功能:改变文本框中字体和颜色
在这里插入图片描述
在窗口部件头文件中加入私有槽函数:

private slots:
    void SetFontColor();//设置字体颜色 
    void on_Bold(bool);//设置黑体
    void on_Itatic(bool);//设置斜体
    void on_Under(bool);//设置下划线

私有槽函数实现如下:

//设置颜色
void Widget::SetFontColor()
{
    QPalette pa = ui->TxtEdit->palette();
    if(ui->Blue_btn->isChecked())
        pa.setColor(QPalette::Text,Qt::blue);
    else if(ui->Red_btn->isChecked())
        pa.setColor(QPalette::Text,Qt::red);
    else if(ui->Green_btn->isChecked())
        pa.setColor(QPalette::Text,Qt::green);
    else
        pa.setColor(QPalette::Text,Qt::black);
    ui->TxtEdit->setPalette(pa);
}
//设置黑体
void Widget::on_Bold(bool checked)
{
    QFont font = ui->Bold_Cbx->font();
    font.setBold(checked);
    font.setPointSize(13);
    ui->TxtEdit->setFont(font);
}

设置字体的套路:
QFont font = ui->部件->font();
font.setBold();
ui->部件->setFont(font);
设置调色板的套路:
QPalette pa = ui->部件->palette();
pa.setColor(QPalette::Text,Qt::blue);
ui->部件->setPalette(pa);

现在的问题是字体属性不能叠加出现,如:同时显示黑体和斜体。
应该想法获取字体信息,修改哪一个属性,就更新一次,再设定一次.

QPalette( [ˈpælət] 调色板)类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。QPalette类有两个基本的概念,一个是ColorGroup,另一个是ColorRole。

QPalette类(调色板)包含每个小部件状态的颜色组。
调色板由三个颜色组成:活动组(Active)、禁用组(Disabled)和非活动组(Inactive)。Qt中的所有小部件都包含一个调色板,并使用它们的调色板绘制自己。这使得用户界面易于配置,并且更容易保持一致性。如果您创建了一个新的小部件,我们强烈建议您使用调色板中的颜色,而不是硬编码特定颜色。
颜色组:
》活动组用于具有键盘焦点的窗口。
》非活动组用于其他窗口。
》禁用组用于因某种原因禁用的小部件(而不是窗口)。
活动窗口和非活动窗口都可以包含禁用的小部件。(禁用的小部件通常称为不可访问的或灰色的。)
可以通过setColor()和setBrush()为调色板的任何颜色组中的特定角色设置颜色和画刷。颜色组包含一组颜色由小部件用于绘制自己。我们建议小部件使用调色板中的颜色组角色,比如“前景”和“基础”,而不是文字颜色,比如“红色”或“绿松石色”。颜色角色在CololRole文档中进行了枚举和定义。
强烈建议您使用当前样式的默认选项板根据需要修改。这是由Qt的小部件在绘制时完成的。
若要修改颜色组,请调用函数setColor()和setBrush(),取决于您想要的是纯颜色还是像素图模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值