QPalette与QFont

实现如下功能:改变文本框中字体和颜色
QPalette与QFont_第1张图片
在窗口部件头文件中加入私有槽函数:

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(),取决于您想要的是纯颜色还是像素图模式。

你可能感兴趣的:(QT)