绘制QStyleOptionButton QStyle::CE_CheckBox背景的方法是什么
what is the way to draw QStyleOptionButton QStyle::CE_CheckBox background?
我正在尝试获取父背景并将其设置为复选框背景颜色。我有一种让复选框昏昏欲睡的绘画方法:
void paint( QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex &index) const
{
// Get item data
bool value = index.data(Qt::UserRole).toBool();
QString text = index.data(Qt::DisplayRole).toString();
// Fill style options with item data
const QStyle *style = QApplication::style();
QStyleOptionButton opt;
opt.state |= value ? QStyle::State_On : QStyle::State_Off;
opt.state |= QStyle::State_Enabled;
opt.text = text;
opt.rect = option.rect;
// Draw item data as CheckBox
style->drawControl(QStyle::CE_CheckBox,&opt,painter);
}
但是如何设置此复选框的背景色?
painter->fillRect(rect, color);
您可以在drawControl:之前添加代码
if (option.state & QStyle::State_Selected && option.state & QStyle::State_Active)
painter->fillRect(option.rect, option.palette.highlight());
else if (option.state & QStyle::State_Selected)
painter->fillRect(option.rect, option.palette.background());
更新:
您可以尝试从小部件初始化QStyleOptionButton,这样您就可以获得小部件的调色板。
QStyleOptionButton opt;
opt.initFrom(this);
旧建议:
更改opt.backgroundBrush可能有效:
opt.backgroundBrush = QBrush(QColor(0, 0, 0, 102));
或设置opt.backgroundColor
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 绘制QStyleOptionButton QStyle::CE_CheckBox背景的方法是什么
- OpenCV中前景-背景分割方法的区别
- 方法,允许我更改QwtPlot颜色背景