QConboBox添加颜色选择

文章展示了如何在Qt应用中通过QComboBox显示预定义的颜色列表,并介绍了如何创建一个自定义的MyComboBoxColor类,该类在点击后弹出颜色对话框供用户选择颜色。连接信号和槽,当用户选择颜色后,会更新关联的标签背景色。
摘要由CSDN通过智能技术生成

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("选择颜色"),

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值