所以,我有一个 QComboBox。
如果currentText()对于小部件来说太长,那么我想显示省略号。就像这样:
所以:
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);
}
这完美地工作着。
问题在于注释之间的代码,因为我正在硬编码左右边框的距离。这让我感到不舒服。
没有那段代码的结果是:
有没有人知道一种更通用的方法来做到这一点,而不是硬编码?谢谢