我有一个自定义Delegate
类,它继承自QStyledItemDelegate
. 在这种paint()
情况下,我想补充一下QStyleOptionButton
哪些应该是可检查的。可能吗?
例如,它表示具有眼睛图标的可见性属性;按下按钮时,眼睛图标变为闭眼图标。
在paint()
方法内部,这是我当前创建按钮的代码:
QStyleOptionButton buttonVis;
buttonVis.rect = getButtonVisibilityRect();
buttonVis.iconSize = QSize(sizeX, sizeY);
buttonVis.icon = icon;
buttonVis.state = QStyle::State_Enabled;
buttonVis.features = QStyleOptionButton::None;
QApplication::style()->drawControl(QStyle::CE_PushButton, &buttonVis, painter);
我加载到的图标buttonVis
由以下人员创建:
QIcon icon;
icon.addPixmap(QPixmap(":/control-visibility.svg"), QIcon::Normal, QIcon::On);
icon.addPixmap(QPixmap(":/control-visibilityNo.svg"), QIcon::Normal, QIcon::Off);
在我运行程序的那一刻,该按钮有一个闭眼图标。是否有控制显示哪个图标的命令?如果我的初始布局无法实现,那么正确的方向是什么?
编辑:我发现了如何选择使用哪个图标来模拟复选框的外观。相反,如果行buttonVis.state = QStyle::State_Enabled;
应该有:
if (/* current item checkbox checked? */)
buttonVis.state = QStyle::State_Enabled | QStyle::State_On;
else
buttonVis.state = QStyle::State_Enabled | QStyle::State_Off;
现在的问题是弄清楚那个条件是什么或如何从editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index)
. 问题是我自己不能真正改变option
,因为它是不断的参考。任何想法如何做到这一点,或如何解决它?