概述
在应用程序中,我们有时需要手动改变文字、控件或窗体的颜色,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
最后
以上就是善良太阳为你收集整理的Qt学习12——调色板QPalette的全部内容,希望文章能够帮你解决Qt学习12——调色板QPalette所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复