#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();
}