1
因此,我有一个QComboBox。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);
}
这是工作flawlessy。 问题是评论之间的代码,因为我硬编码从左边界和右边界的距离。这让我感到害怕。
无代码的结果是:
有谁知道要做到这一点,没有硬编码更一般的方法是什么? 谢谢
谢谢你的建议..只要我有一段时间我会尝试调查你的建议! –
它完美无瑕!谢谢! –