应用省略文本后,组合框的下拉列表不会调整大小
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();
}
我正在为 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();
}