应用省略文本后,组合框的下拉列表不会调整大小

Combobox'es dropdown is not resized after elided text applied

我正在为 QComboBox 重新实现 paintEvent,为委托重新实现 paint,基于 QStyledItemDelegate。问题出在我的代码上,文本被省略了,但背景的大小却没有。 可能是什么原因,哪个对象负责这个背景?

委托的 paint 重新实现的方法:


void myDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
                                              const QModelIndex &index) const
{
    QStyleOptionViewItem opt = option;
    initStyleOption(&opt, index);

    opt.rect.setWidth(_parentComboRect->width());// gets parent's size
    opt.textElideMode = Qt::ElideRight;

    const QWidget *widget = opt.widget;
    QStyle *style = widget ? widget->style() : QApplication::style();

    style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
}

有什么建议吗?

我找到了解决办法!

void MyCombo::showPopup() // an overridden function
{
    view()->window()->setFixedWidth(100);// ->window() makes that field!
    QComboBox::showPopup();
}