ich habe ein Model gemacht, das zwei Spalten anzeigt.
In der ersten Spalte wird Text und ein Icon angezeigt.
In der zweiten Spalte würde ich gerne mehrere Icons nebeneinander anzeigen.
Für den Zweck habe ich ein eigenes Delegate gemacht, das vom Model eine Liste von Icons bekommt, das es nebeneinander zeichnet.
Das ganze funktioniert auch alles, jedoch hätte ich gerne, dass die Icons (der zweiten Spalte) rechtsbündig ausgerichtet werden (im Moment sind sie linksbündig direkt neben dem Text der 1. Spalte).
Hier eine leicht gekürzte Version meiner Paint-Methode:
Code: Alles auswählen
void multiicondelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
if (!index.isValid()) {
QStyledItemDelegate::paint(painter, option, index);
return;
}
if (index.column() == 0) {
QStyledItemDelegate::paint(painter, option, index);
return;
}
viewitem* item = static_cast<viewitem*>(index.internalPointer());
if (!item) {
QStyledItemDelegate::paint(painter, option, index);
return;
}
int nextx = 0;
int icosize = item->iconSize();
QList<QIcon> icolist = item->icons();
for (int i = 0; i < icolist.count(); ++i) {
icolist.at(i).paint(painter, option.rect.x() + nextx, option.rect.y(), icosize, icosize);
nextx += icosize;
}
}
Vielen Dank!