Sim*_*mon 2 qt qitemdelegate qcheckbox
我试图只改变QCheckBox指示矩形的颜色.
目前我成功绘制了矩形的右边和底线.可能我在这里做错了.
这是我的代码:
CheckBoxWidget.cpp
CheckBoxWidget::CheckBoxWidget(QObject *poParent)
: QItemDelegate(poParent)
{
}
void CheckBoxWidget::drawCheck( QPainter *painter,
const QStyleOptionViewItem &option,
const QRect & rect,
Qt::CheckState state) const
{
QRect oCheckBoxRect =
QApplication::style()->subElementRect( QStyle::SE_CheckBoxIndicator, &option);
painter->setPen(Qt::white);
painter->drawRect(oCheckBoxRect);
QItemDelegate::drawCheck(painter, option, oCheckBoxRect, state);
}
Run Code Online (Sandbox Code Playgroud)
CheckBoxWidget.h
class CheckBoxWidget : public QItemDelegate
{
Q_OBJECT
public:
CheckBoxWidget(QObject *poParent = 0);
virtual ~CheckBoxWidget();
protected:
virtual void drawCheck( QPainter *painter,
const QStyleOptionViewItem &option,
const QRect &,
Qt::CheckState state) const;
};
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
无需为此创建自定义委托.您可以使用样式表来根据需要更改复选框或任何其他窗口小部件的颜色.以下样式表将为3px复选框矩形设置灰色边框.
QCheckBox::indicator {
border: 3px solid #5A5A5A;
background: none;
}
Run Code Online (Sandbox Code Playgroud)
要设置样式表,您可以使用Qt Designer或setStylesheet函数.
为了设置特定颜色,以下所有内容均有效:
border: 3px solid #5A5A5A;
border: 3px solid red;
border: 3px solid rgb(255, 120, 100);
border: 3px solid rgba(255,120,100, 50); // For alpha transparency
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10871 次 |
| 最近记录: |