2015-07-23 2 views
4

У меня есть QCompleter, прикрепленный к QLineEdit, и он отлично работает, за исключением всплывающих подсказок, которые являются шириной редактирования строки, в то время как мне нужно, чтобы они были более широкими. В дополнении нет каких-либо методов, которые, похоже, позволяют мне изменить это. Что я могу сделать?Qt QCompleter не может иметь свой размер шрифта?

ответ

3

Вы можете Подкласс QAbstractItemView, в котором вы можете установить ширину, а затем установить этот настроенный класс QCompleter::setPopup(QAbstractItemView * popup)

+0

есть инструкции шаблонные о том, как это сделать? Кажется, есть несколько чистых виртуальных методов, которые мне нужно переопределить. –

+0

Мы можем добавить QTreeView вместо одной строки и установить QTableView :: resizeColumnToContents(). Это может помочь вам с легкостью –

0

Он может быть установлен в QAbstractView * всплывающее окно() пункт. Моя попытка:

// 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, увеличить 2x):

Смежные вопросы