2

カスタムデリゲートを持つ QListView があります

カスタム デリゲート ペイント メソッド:

QStyleOptionViewItemV4 opt = option;

initStyleOption(&opt,index);

opt.decorationSize       = QSize(deco_size,deco_size);
opt.decorationAlignment |= Qt::AlignCenter;
opt.displayAlignment    |= Qt::AlignCenter;
opt.decorationPosition   = QStyleOptionViewItem::Top;
opt.font.setBold(true);

const QWidget *widget = opt.widget;

QStyle *style = widget ? widget->style() : QApplication::style();

style->drawControl(QStyle::CE_ItemViewItem,&opt,painter);

私の問題は、 QListView::item のスタイルシートを設定した場合です。

#lv::item:selected:active  { background: red; }

うまくいきません!

内部を使用している場合、カスタムデリゲートはありません。すべて問題ありません。

2. カスタム デリゲートを使用して装飾アイコンをテキストの上部に配置するだけです。アイコンを強制的に上部に表示するスタイルシート オプションはありますか?

4

1 に答える 1

2

QStyle::drawControl 関数 "widget" の 4 番目のパラメータがありませんでした:

style->drawControl(QStyle::CE_ItemViewItem,&opt,painter,widget);

ここでは、QStyledItemDelegate ソース コード、ペイント メソッド:

https://qt.gitorious.org/qt/webkit/source/435bbd4be73768f617e4a4083a345d1d8d62daa3:src/gui/itemviews/qstyleditemdelegate.cpp#L444

于 2013-10-28T13:15:55.810 に答える