利用QComboBox制作渐变颜色条选择功能

     这个功能总共分为三个步骤;

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);
    }
}

制作效果如下:

标题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值