@Chris-Kawa thank you very much. That definitely helped a lot. :)
I have done the manual positioning now, so all delegates line up with the actual widget. :)
void ViewLayerItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// Überprüfen Sie, ob der aktuelle Index bearbeitet wird
if (index == currentlyEditedIndex) {
return;
}
// Setzen Sie die Werte der SpinBox und CheckBox basierend auf den Modellwerten
QString lineEditvalue = index.model()->data(index, Qt::EditRole).toString();
bool checkBoxValue = index.model()->data(index, Qt::CheckStateRole).toBool();
// Laden Sie das Icon und skalieren Sie es
QPixmap iconPixmap("://resource/quick.png"); // Ersetzen Sie dies durch den Pfad zu Ihrer Icon-Datei
QPixmap scaledPixmap = iconPixmap.scaled(32, 32, Qt::KeepAspectRatio, Qt::SmoothTransformation);
// Berechnen Sie die Position für das Icon
int centerY = option.rect.top() + option.rect.height() / 2;
int iconY = centerY - scaledPixmap.height() / 2;
QPoint iconPos = QPoint(option.rect.left() + 10, iconY);
// Zeichnen Sie das Pixmap mit dem QPainter
painter->drawPixmap(iconPos, scaledPixmap);
// Berechnen Sie die Position und Größe für das LineEdit
QRect lineEditRect = option.rect;
lineEditRect.setLeft(iconPos.x() + scaledPixmap.width() + 10); // Adjust as needed
lineEditRect.setRight(option.rect.right() - 10); // Adjust as needed
// Erstellen Sie ein QStyleOptionFrame für das LineEdit
QStyleOptionFrame lineEditOption;
lineEditOption.lineWidth = 1; // Setzen Sie die Liniendicke auf 1
lineEditOption.rect = lineEditRect;
// Zeichnen Sie das LineEdit
QApplication::style()->drawControl(QStyle::CE_ShapedFrame, &lineEditOption, painter);
// Zeichnen Sie den Text des LineEdits
painter->drawText(lineEditOption.rect.adjusted(2,0,0,0), Qt::AlignLeft | Qt::AlignVCenter, lineEditvalue);
// Berechnen Sie die Position und Größe für die CheckBox
QRect checkBoxRect = option.rect;
checkBoxRect.setLeft(lineEditRect.right() - 22); // Adjust as needed
checkBoxRect.setRight(option.rect.right() - 10); // Adjust as needed
// Erstellen Sie ein QStyleOptionButton für die CheckBox
QStyleOptionButton checkBoxOption;
checkBoxOption.state = checkBoxValue ? QStyle::State_On : QStyle::State_Off;
checkBoxOption.rect = checkBoxRect;
// Zeichnen Sie die CheckBox
QApplication::style()->drawControl(QStyle::CE_CheckBox, &checkBoxOption, painter);
}