So habe ich eine QComboBox.QComboBox elide Text auf ausgewählten Artikel
Wenn die current() für das Widget zu lang ist, dann will ich ein Auslassungszeichen zeigen.
So:
So:
void MyComboBox::paintEvent(QPaintEvent *)
{
QStylePainter painter(this);
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
QRect rect = this->rect();
//this is not ideal
rect.setLeft(rect.left() + 7);
rect.setRight(rect.width() - 15);
//
QTextOption option;
option.setAlignment(Qt::AlignVCenter);
QFontMetrics fontMetric(painter.font());
const QString elidedText = QAbstractItemDelegate::elidedText(fontMetric, rect.width(), Qt::ElideRight, this->currentText());
painter.drawText(rect, elidedText, option);
}
Dies wird flawlessy arbeiten. Das Problem ist der Code zwischen den Kommentaren, weil ich die Abstände von der linken und rechten Grenze hartcodiere. Es bringt mich zum Weinen.
Das Ergebnis ohne dass Code ist:
Kennt jemand eine allgemeinere Art und Weise, dies zu tun, ohne zu? Danke
danke für den Vorschlag .. sobald ich etwas Zeit habe, werde ich versuchen zu untersuchen, was Sie vorgeschlagen haben! –
Es funktioniert einwandfrei! Vielen Dank! –