0

我正在重新实现paintEventQComboBox 和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);
}

有什么建议么?

在此处输入图像描述

4

1 回答 1

0

我找到了解决方案!

void MyCombo::showPopup() // an overridden function
{
    view()->window()->setFixedWidth(100);// ->window() makes that field!
    QComboBox::showPopup();
}
于 2021-10-19T09:28:59.460 回答