Qt中给按钮设置颜色的方法

7 篇文章 7 订阅

对于界面编程来说,色彩无疑是一个重点关注的对象,界面好不好看,色彩占据一大半。这里我在学习给界面涂色时做的一个小小的笔记。

第一种_CSS风格

button->setStyleSheet("background-color:yellow");

在这里插入图片描述
这是最简单的一种,但不常用,因为当按钮设置如下属性颜色就看不见了

button->setFlat(true);

这种情况下,只有按钮按钮下的状态才能显示出颜色。
在这里插入图片描述

第二种_使用QPalette类

使用QPalette类也分两种情况:
但是使用QPalette有前提:我们要把按钮放在QFrame框里,同时按钮窗体进行两项设置

    //放到QFrame里
    buttonFrame = new QFrame;
    QVBoxLayout *buttonLayout = new QVBoxLayout(buttonFrame);
    buttonLayout->addWidget(button);
	//进行两项设置
	button->setAutoFillBackground(true);
	button->setFlat(true);

1.使用QColor类

    QColor color(255,0,255);
    QPalette p = buttonFrame->palette();
    p.setColor(QPalette::Button,color);
    button->setPalette(p);

在这里插入图片描述

2.不使用QColor

    QPalette p = buttonFrame->palette();
    p.setColor(QPalette::Button,Qt::green);
	button->setPalette(p);

在这里插入图片描述

第三种_使用QColor的另一种方法

这种方法是调用Qt的预定义颜色,用选取的预定义颜色给控件赋值,常常和QComboBox下拉框配合使用,将获取到的预定义颜色填入下拉框以供选择。

定义下拉框
comboBoxOne
获取Qt预定义颜色,填到下拉框里

void Widget::fillColorList(QComboBox *comboBox)
{
    QStringList colorList = QColor::colorNames();
    QString color;
    foreach (color, colorList)
    {
        QPixmap pix(QSize(70,20));
        pix.fill(QColor(color));
        comboBox->addItem(QIcon(pix),NULL);
        comboBox->setIconSize(QSize(70,20));
        comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
    }
}

定义响应下拉框改变信号的槽函数(改变按钮颜色)

void Widget::changeColor()
{
    QStringList colorList = QColor::colorNames();
    QColor colors = QColor(colorList[comboBoxOne->currentIndex()]);
    QPalette pOne = buttonFrame->palette();
    pOne.setColor(QPalette::Button,colors);
    button->setPalette(pOne);
    buttonFrame->update();
}

信号和槽函数的连接

这里让我感到困惑的是,信号槽连接的方式只能用Qt4旧版版本的连接方式,新版本就会报错。有没有哪位大佬能给解释一下呀?

connect(comboBoxOne,SIGNAL(activated(int)),this,SLOT(changeColor()));

在这里插入图片描述

Qt5魅力无穷,作为初学者,感到了长路漫漫的愁…

  • 10
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值