Выпадающий список выпадающих списков не изменяется после применения скрытого текста

#qt #qt5 #qt5.15

Вопрос:

Я переопределяю paintEvent для QComboBox и paint для делегата, основываясь на QStyledItemDelegate . Проблема в моем коде, текст скрыт, но размер фона-нет. В чем может быть причина, какой объект отвечает за этот фон?

paint переопределенный метод делегата:

 
void myDelegate::paint(QPainter *painter, const QStyleOptionViewItem amp;option,
                                              const QModelIndex amp;index) const
{
    QStyleOptionViewItem opt = option;
    initStyleOption(amp;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, amp;opt, painter, widget);
}
 

Есть какие-нибудь предложения?

введите описание изображения здесь

Ответ №1:

Я нашел решение!

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