1.通过列表显示选择颜色
代码如下:
//cpp文件/
#include "widget.h"
#include "ui_widget.h"
#include<QColor>
#include<QPixmap>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//颜色存到list中
QStringList colors = QColor::colorNames();
//遍历list
foreach(auto color,colors)
{
QPixmap pix(196,46);
pix.fill(QColor(color));
ui->comboBox->addItem(QIcon(pix),nullptr);
ui->comboBox->setIconSize((QSize(196,46))); //设置大小要比comboBox小
ui->comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
connect(ui->comboBox,QOverload<int>::of(&QComboBox::activated),[=](int index)
{
colors.at((index));
});
}
}
Widget::~Widget()
{
delete ui;
}
2.自定义comboBox类,通过点击打开颜色对话框
效果如下:(写完项目后打算记下来,所以自己重新写了该部分,对样式并无过多修饰)。
思路大致如下:
1.创建一个自定义类(MyComboBoxColor)继承于widget,在该类ui中拖入相应控件
2.在cpp文件中写入如下代码
#include "mycomboboxcolor.h"
#include "ui_mycomboboxcolor.h"
#include<QColor>
#include<QColorDialog>
MyComboBoxColor::MyComboBoxColor(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyComboBoxColor)
{
ui->setupUi(this);
connect(ui->pushButton,&QPushButton::clicked,this,&MyComboBoxColor::slotsPushButton);
}
MyComboBoxColor::~MyComboBoxColor()
{
delete ui;
}
void MyComboBoxColor::slotsPushButton()
{
QColor color;
QColorDialog dialog;
color = dialog.getColor(Qt::red,this,tr("选择颜色"),QColorDialog::ShowAlphaChannel);
if(color.isValid())
{
ui->label->setStyleSheet("background-color:"+color.name()+";");
}
}
3.在主界面函数中,将该类new出来并指定其父窗口(widget_3),如果ui界面则直接将其显示窗口提升为该类
最后运行调试,或加入自己需要的样式。
注:关于QColorDialog的样式跟其父窗口相关
QColorDialog::getColor(Qt::red,需要指定的父类,tr("选择颜色"),