这个功能总共分为三个步骤;
1.获取颜色变化数组,也就是多个rgb格式的数据;
2.新建QPoxmap格式数据,利用QPainter将颜色条绘制到pix上;
3.将pix转化为QIcon,combobox添加icon图像;
代码如下:
void MainWindow::initialize_color()
{
double pix_width = 256 * 2;//由于数组大小为256,所以图片大小需去256的倍数
double pix_height = 30;
STLUT s;//一个设置有颜色条数组的结构体,rgb值全部为二次方
for(int i = 0; i < LUTCOUNT;i++)//制作QPixMap格式颜色条
{
QPixmap pix(QSize(pix_width ,pix_height));
QPainter painter(&pix);
double width_depth = pix_width / BUCKET;
for(int j = 0; j < BUCKET;j++)
{
QColor color((int)(sqrt(s.paLUT[i][0 + 3*j])) , (int)(sqrt(s.paLUT[i][1 + 3*j])), (int)(sqrt(s.paLUT[i][2 + 3*j])));//获取数组中的rgb值,由于全部为二次方,所先要取根号
QRect source(width_depth * (j * 1.0), 0, width_depth, pix_height);
painter.fillRect(source, color);
}
ui->comboBox->addItem(QIcon(pix),s.strLUT[i]);//添加颜色条和名称
ui->comboBox->setIconSize(QSize(ui->comboBox->width()*0.6,ui->comboBox->height()*0.6));
ui->comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
}
}
制作效果如下: