首页| 论坛| 消息

标题:请问如何设置QStyledOptionButton的背景颜色?
作者:qq2632671
日期:2018-07-18 13:37
内容:

现在有一个表格,用于显示一组设备的状态,其中一列是设备的开关,用户可以点击控制设备的启动/停止
.
对于这一列,我使用了委托,应为需要按钮是显示在上面的,所以我使用了委托,继承自QStyledDelegate
void ChooseWatchObjectDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionButton btn;
btn.rect = option.rect;
bool fg = index.model()->data(index).toBool();
if(fg == true)
{
btn.palette.setBrush(QPalette::Button,QBrush(QColor(Qt::green)));//无效
btn.text = tr("启动");
}
else
{
btn.palette.setBrush(QPalette::Background,QBrush(QColor(Qt::red)));//同样无效
btn.text = tr("停止");
}
btn.state |= QStyle::State_Enabled;
if(option.widget != NULL)
QApplication::style()->drawControl(QStyle::CE_PushButton,&btn,painter);
else
option.widget->style();
}
这里没有使用createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index)函数,应为这个函数生产的按钮只有用户双击后才会显示,而我需要向上图那样,按钮直接在表格上
然后我希望表格上的按钮可以有个背景颜色,但我各种方法都试过了,始终没有改变这个QStyledOptionButton的背景颜色,我想问下有没有改这个背景颜色的办法,最好有代码


#1 [qq2632671 07-18 13:40]
我有考虑过使用图片来替代这个按钮,单应为按钮点击是有会有凹凸变化,而图片没办法做到这点,所以用图片替代按钮的方案被领导否定了
#2 [qq2632671 07-19 17:00]
貌似这个问题很那。。CSDN也没人知道
#3 [cluckly 07-20 11:25]
试试:
button->setFlat(true);
button->setAutoFillBackground(true);
button->setPalette(palette);
#4 [jecsoncjx 07-10 15:38]
大佬,解决了吗?我和您走到一条路上 被卡住了

回复 发表
主题 版块