Qt QCompleter不能设置它的大小?

时间:2015-07-23 10:49:26

标签: c++ qt

我有QLineEdit附加到inline并且它工作正常,除了建议弹出窗口是行编辑的宽度,而我需要它们更宽。完成者中没有任何方法似乎允许我改变它。我该怎么办?

2 个答案:

答案 0 :(得分:3)

您可以在其中设置可以设置宽度的QAbstractItemView子类,然后将此自定义类设置为QCompleter::setPopup(QAbstractItemView * popup)

答案 1 :(得分:0)

可以在QAbstractView * popup()项目中设置。我的尝试:

// compute needed width
const QAbstractItemView * popup = _completer->popup();
int padding = popup->width() - popup->viewport()->width();
int scrollbarWidth = qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent);
int frameWidth = popup->frameWidth();
int textWidth = popup->fontMetrics().boundingRect(QLocale().toString(string)).width();
int desiredWidth = textWidth + 4 * padding + 2 * frameWidth + scrollbarWidth;

// set it
_completer->popup()->setMinimumWidth(desiredWidth);

结果(在Windows 7上测试,放大2倍):