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);
プログラムを実行すると、ボタンには目を閉じたアイコンが表示されます。どのアイコンを表示するかを制御するコマンドはありますか? 初期のレイアウトを実装できない場合、どの方向に進むべきでしょうか?
編集:チェックボックスの外観をシミュレートするために使用するアイコンを選択する方法を見つけました。代わりに if 行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
問題は、常に参照しているため、自分で実際に変更できないことです。それを行う方法、またはそれを回避する方法はありますか?