2016-06-28 28 views
0

Ein QLineEdit mit einer einfachen Vanille QStringListQCompleter. Ich frage mich, ob ich das Aussehen des Dropdowns ändern kann (ich möchte entweder eine Minigröße oder eine kleinere Bildlaufleiste haben).QLineEdit`s QCompleter Stylesheet

QCompleter

Klarstellung: Ich möchte es in einem Stylesheet setzen, nicht im Code.

Zusammenfassung meiner bisherigen Ergebnisse:

  1. Ziemlich gute Zusammenfassung hier: https://forum.qt.io/topic/26703/solved-stylize-using-css-and-editable-qcombobox-s-completions-list-view/12
  2. Ich habe QStyledItemDelegate zu verwenden und
  3. geben dem Popup einen Namen für den qss Selektor
  4. Ich habe versucht, das und es funktioniert nicht für mich, aber scheint für andere zu arbeiten
+0

Offensichtlich muss ich einen 'QStyledItemDelegate' gesetzt, wie hier gesagt http://stackoverflow.com/a/13313676/356726 –

Antwort

3

Eine einfache gerade für Ward-Lösung ist das Stylesheet der QScrollBar, die von der popup der QCompleter verwendet wird. Meine Kenntnisse von qss sind wenig, also weiß ich nicht, ob Sie eine minimale Größe auf diese Weise festlegen können, aber Sie können immer einen Blick auf verticalScrollBar() werfen.

Hier einige Code für die qss Weg ist:

#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

' s nützlich, aber Ich möchte vermeiden, dass es fest codiert ist. Also muss ich die qss-Selektoren finden, aber Ihr Code hat mir einige Ideen zum ausprobieren gegeben -> upvoted. –