Наскоро сделал следующий хак (мне пока нужен только Qt::ElideRight):
class QElidableLabel : public QLabel
{
Q_OBJECT
typedef QLabel Base;
public:
explicit QElidableLabel(QWidget* parent = 0, Qt::WindowFlags f = 0) :
Base(parent, f) {}
explicit QElidableLabel(const QString& text, QWidget* parent = 0, Qt::WindowFlags f = 0) :
Base(text, parent, f) {}
protected:
virtual void paintEvent(QPaintEvent*);
private:
Q_DECLARE_PRIVATE(QLabel)
};
void QElidableLabel::paintEvent(QPaintEvent* event)
{
Q_D(QLabel);
QScopedValueRollback<QString> scopedText(d->text);
d->text = fontMetrics().elidedText(d->text, Qt::ElideRight, contentsRect().width());
Base::paintEvent(event);
}