ich habe eine QListView und möchte, dass der Hintergrund von jedem Item mit einem QLinearGradient gezeichnet wird.
Um das zu realisieren habe ich der QListView meine StyleViewItem, die von QCommonStyle ableitet, angehängt mit
Code: Alles auswählen
this->listView->setStyle(new StyleViewItem);Code: Alles auswählen
void StyleViewItem::drawControl(ControlElement control, const QStyleOption *option, QPainter *painter, const QWidget *widget) const {
if (control == CE_ItemViewItem) {
painter->save();
QRect rect = option->rect;
QLinearGradient gradient = QLinearGradient(option->rect.top(), option->rect.left(), option->rect.top(), option->rect.bottom());
const QColor from = QColor::fromRgb(120, 120, 120);
const QColor to = QColor::fromRgb(25, 25, 25);
gradient.setColorAt(0.1, from);
gradient.setColorAt(0.9, to);
gradient.setSpread(QGradient::PadSpread);
painter->fillRect(rect, QBrush(gradient));
painter->restore();
} else {
this->QCommonStyle::drawControl(control, option, painter, widget);
}
http://imageshack.us/photo/my-images/845/screenpo.jpg
Auf dem Image ist links die Anwendung zu sehen und die QListView mit den Verläufen.
Rechts ist zu sehen die Anwendung und wie ich mir die Verläufe für die Items vorstelle.
Das "rechte Image" ist bearbeitet in GIMP!
Ich würde gerne verstehen, was da falsch läuft. Wäre euch sehr dankbar, wenn ihr mir helfen würdet.
(Mir ist bewußt, dass es auch andere Möglichkeiten gibt wie z.B. StyleSheets. Möchte ich aber nicht einsetzen!)
Vielen Dank im voraus.
QuornJulio