2016-06-28 3 views
0

Имея QLineEdit с простой ванилью QStringListQCompleter. Интересно, могу ли я изменить внешний вид выпадающего списка (я хочу иметь либо минимальный размер, либо меньшую полосу прокрутки).QLineLevels QCompleter Таблица стилей

QCompleter

Разъяснение: Я хочу, чтобы установить его в таблице стилей, а не в коде.

Резюме моих выводов до сих пор:

  1. Довольно хорошее резюме здесь: https://forum.qt.io/topic/26703/solved-stylize-using-css-and-editable-qcombobox-s-completions-list-view/12
  2. Я должен использовать QStyledItemDelegate и
  3. дают всплывающее имя для селектора QSS
  4. Я попытался это и не работает для меня, но, похоже, работает для других
+0

Очевидно, что я должен установить 'QStyledItemDelegate', как сказал здесь http://stackoverflow.com/a/13313676/356726 –

ответ

3

Простая прямая для Решение состоит в том, чтобы установить таблицу стилей QScrollBar, используемую popup из QCompleter. Мои знания о qss мало, поэтому я не знаю, можете ли вы установить минимальный размер таким образом, но вы всегда можете взглянуть на verticalScrollBar().

Вот код для QSS образом:

#include <QAbstractItemView> 
#include <QCompleter> 
#include <QLineEdit> 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QLineEdit edit; 
    edit.show(); 

    QStringList completionList; 
    for (int a = 0 ; a < 10 ; ++a) { 
     completionList << QString("test%1").arg(a); 
    } 

    QCompleter completer(completionList); 

    edit.setCompleter(&completer); 

    QAbstractItemView *popup = completer.popup(); 

    popup->setStyleSheet("QScrollBar{ width: 50px;}"); 

    return a.exec(); 
} 
+0

That's полезно, но Я бы хотел, чтобы он не был жестко запрограммирован. Поэтому мне нужно найти селектора qss, но ваш код дал мне несколько идей для tryout -> upvoted. –

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