Qt学习12——调色板QPalette

版权声明:欢迎转载和收藏。转载请注明出处,谢谢! https://blog.csdn.net/u014266675/article/details/73974084

在应用程序中,我们有时需要手动改变文字、控件或窗体的颜色,Qt提供的调色板类QPalette,是Qt专门用于管理窗体和控件颜色的类。每一个窗体或控件都包含一个QPalette对象。在显示时,QPalette对象对各部分各状态下的颜色描述进行绘制。本文将用实例讲述QPalette类的用法。


在示例中,我们需要创建颜色下拉列表框,并对窗体、窗体文本、按钮、按钮文本、文本框的颜色进行设置。

1、颜色下拉列表

首先拖入下拉列表控件QComboBox。我们可以通过QColor类获取已知名称的颜色并存到表单容器中,遍历表单并将这些颜色填充到下拉列表中。填充过程其实就是将下拉列表的每个项目的ICon重绘并设置颜色。

void toolbox::fillColorList(QComboBox *combobox){
    QStringList m_colorlist = QColor::colorNames(); //获取Qt已知名称的颜色列表
    QString m_color;
    foreach (m_color, m_colorlist) { //遍历颜色列表
        QPixmap pix(QSize(84,20)); //新建pix图标对象用于显示颜色
        pix.fill(QColor(m_color)); //将当前遍历的颜色填充到pix
        combobox->addItem(QIcon(pix),m_color);
        combobox->setIconSize(QSize(84,20));
        combobox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
        //设置下拉列表尺寸调整为“符合内容大小”
    }
}

2、设置对象颜色

这里以改变窗体颜色为例。首先获取当前颜色列表所选颜色,然后在调色板中指定设置对象和颜色,然后对窗体ui设置调色板对象。

void toolbox::window(){
    QStringList m_colorlist = QColor::colorNames();//获取颜色列表
    QColor m_color = QColor(m_colorlist[ui->pwindowCBBox->currentIndex()]);//获取当前选项的颜色
    QPalette m_palette = ui->dockWidget->palette();
    m_palette.setColor(QPalette::Window,m_color);//指定调色对象类型和颜色
    ui->dockWidget->setPalette(m_palette);//将窗口颜色设置为指定颜色
    ui->dockWidget->update();//刷新窗体显示
}
其他几种类型的设置与此类似,只需要修改设置对象的类型即可。QPalette支持设置颜色的对象可在QPalette::ColorRole中查询到:


可以通过以下示意图看到每个具体的对象:



最后演示一下各个对象设置的效果:



示例下载:点击下载

Qt版本:Qt5.8.0(MSVC 2015,32bit)+Qt Creator 4.2.1

猜你喜欢

转载自blog.csdn.net/u014266675/article/details/73974084