QCompleter

The QCompleter class provides completions based on an item model. More

Inheritance diagram of PySide2.QtWidgets.QCompleter

Synopsis

Functions

Virtual functions

Slots

Signals

Detailed Description

You can use QCompleter to provide auto completions in any Qt widget, such as QLineEdit and QComboBox . When the user starts typing a word, QCompleter suggests possible ways of completing the word, based on a word list. The word list is provided as a QAbstractItemModel . (For simple applications, where the word list is static, you can pass a QStringList to QCompleter ‘s constructor.)

Basic Usage

A QCompleter is used typically with a QLineEdit or QComboBox . For example, here’s how to provide auto completions from a simple word list in a QLineEdit :

wordList = ["alpha", "omega", "omicron", "zeta"]

lineEdit = QLineEdit(self)

completer = QCompleter(wordList, self)
completer.setCaseSensitivity(Qt.CaseInsensitive)
lineEdit.setCompleter(completer)

A QFileSystemModel can be used to provide auto completion of file names. For example:

completer = QCompleter(self)
completer.setModel(QDirModel(completer))
lineEdit.setCompleter(completer)

To set the model on which QCompleter should operate, call setModel() . By default, QCompleter will attempt to match the completion prefix (i.e., the word that the user has started typing) against the EditRole data stored in column 0 in the model case sensitively. This can be changed using setCompletionRole() , setCompletionColumn() , and setCaseSensitivity() .

If the model is sorted on the column and role that are used for completion, you can call setModelSorting() with either CaseSensitivelySortedModel or CaseInsensitivelySortedModel as the argument. On large models, this can lead to significant performance improvements, because QCompleter can then use binary search instead of linear search. The binary search only works when the filterMode is MatchStartsWith .

The model can be a list model , a table model , or a tree model . Completion on tree models is slightly more involved and is covered in the Handling Tree Models section below.

The completionMode() determines the mode used to provide completions to the user.

Iterating Through Completions

To retrieve a single candidate string, call setCompletionPrefix() with the text that needs to be completed and call currentCompletion() . You can iterate through the list of completions as below:

i = 0
while completer.setCurrentRow(i):
    print "%s is match number %d" % (completer.currentCompletion(), i)
    i += 1

completionCount() returns the total number of completions for the current prefix. completionCount() should be avoided when possible, since it requires a scan of the entire model.

The Completion Model

completionModel() return a list model that contains all possible completions for the current completion prefix, in the order in which they appear in the model. This model can be used to display the current completions in a custom view. Calling setCompletionPrefix() automatically refreshes the completion model.

Handling Tree Models

QCompleter can look for completions in tree models, assuming that any item (or sub-item or sub-sub-item) can be unambiguously represented as a string by specifying the path to the item. The completion is then performed one level at a time.

Let’s take the example of a user typing in a file system path. The model is a (hierarchical) QFileSystemModel . The completion occurs for every element in the path. For example, if the current text is C:\Wind , QCompleter might suggest Windows to complete the current path element. Similarly, if the current text is C:\Windows\Sy , QCompleter might suggest System .

For this kind of completion to work, QCompleter needs to be able to split the path into a list of strings that are matched at each level. For C:\Windows\Sy , it needs to be split as “C:”, “Windows” and “Sy”. The default implementation of splitPath() , splits the completionPrefix using separator() if the model is a QFileSystemModel .

To provide completions, QCompleter needs to know the path from an index. This is provided by pathFromIndex() . The default implementation of pathFromIndex() , returns the data for the edit role for list models and the absolute file path if the mode is a QFileSystemModel .

See also

QAbstractItemModel QLineEdit QComboBox Completer Example

class QCompleter(model[, parent=None])

QCompleter([parent=None])

QCompleter(completions[, parent=None])

param parent

QObject

param model

QAbstractItemModel

param completions

list of strings

Constructs a completer object with the given parent that provides completions from the specified model .

Constructs a completer object with the given parent .

PySide2.QtWidgets.QCompleter.CompletionMode

This enum specifies how completions are provided to the user.

Constant

Description

QCompleter.PopupCompletion

Current completions are displayed in a popup window.

QCompleter.InlineCompletion

Completions appear inline (as selected text).

QCompleter.UnfilteredPopupCompletion

All possible completions are displayed in a popup window with the most likely suggestion indicated as current.

PySide2.QtWidgets.QCompleter.ModelSorting

This enum specifies how the items in the model are sorted.

Constant

Description

QCompleter.UnsortedModel

The model is unsorted.

QCompleter.CaseSensitivelySortedModel

The model is sorted case sensitively.

QCompleter.CaseInsensitivelySortedModel

The model is sorted case insensitively.

PySide2.QtWidgets.QCompleter.activated(index)
Parameters

indexQModelIndex

PySide2.QtWidgets.QCompleter.activated(text)
Parameters

text – unicode

PySide2.QtWidgets.QCompleter.caseSensitivity()
Return type

CaseSensitivity

PySide2.QtWidgets.QCompleter.complete([rect=QRect()])
Parameters

rectQRect

For PopupCompletion and QCompletion::UnfilteredPopupCompletion modes, calling this function displays the popup displaying the current completions. By default, if rect is not specified, the popup is displayed on the bottom of the widget() . If rect is specified the popup is displayed on the left edge of the rectangle.

For InlineCompletion mode, the highlighted() signal is fired with the current completion.

PySide2.QtWidgets.QCompleter.completionColumn()
Return type

int

PySide2.QtWidgets.QCompleter.completionCount()
Return type

int

Returns the number of completions for the current prefix. For an unsorted model with a large number of items this can be expensive. Use setCurrentRow() and currentCompletion() to iterate through all the completions.

PySide2.QtWidgets.QCompleter.completionMode()
Return type

CompletionMode

PySide2.QtWidgets.QCompleter.completionModel()
Return type

QAbstractItemModel

Returns the completion model. The completion model is a read-only list model that contains all the possible matches for the current completion prefix. The completion model is auto-updated to reflect the current completions.

Note

The return value of this function is defined to be an QAbstractItemModel purely for generality. This actual kind of model returned is an instance of an QAbstractProxyModel subclass.

PySide2.QtWidgets.QCompleter.completionPrefix()
Return type

unicode

PySide2.QtWidgets.QCompleter.completionRole()
Return type

int

PySide2.QtWidgets.QCompleter.currentCompletion()
Return type

unicode

Returns the current completion string. This includes the completionPrefix . When used alongside setCurrentRow() , it can be used to iterate through all the matches.

PySide2.QtWidgets.QCompleter.currentIndex()
Return type

QModelIndex

Returns the model index of the current completion in the completionModel() .

PySide2.QtWidgets.QCompleter.currentRow()
Return type

int

Returns the current row.

See also

setCurrentRow()

PySide2.QtWidgets.QCompleter.filterMode()
Return type

MatchFlags

See also

setFilterMode()

PySide2.QtWidgets.QCompleter.highlighted(index)
Parameters

indexQModelIndex

PySide2.QtWidgets.QCompleter.highlighted(text)
Parameters

text – unicode

PySide2.QtWidgets.QCompleter.maxVisibleItems()
Return type

int

PySide2.QtWidgets.QCompleter.model()
Return type

QAbstractItemModel

Returns the model that provides completion strings.

PySide2.QtWidgets.QCompleter.modelSorting()
Return type

ModelSorting

PySide2.QtWidgets.QCompleter.pathFromIndex(index)
Parameters

indexQModelIndex

Return type

unicode

Returns the path for the given index . The completer object uses this to obtain the completion text from the underlying model.

The default implementation returns the edit role of the item for list models. It returns the absolute file path if the model is a QFileSystemModel .

See also

splitPath()

PySide2.QtWidgets.QCompleter.popup()
Return type

QAbstractItemView

Returns the popup used to display completions.

See also

setPopup()

PySide2.QtWidgets.QCompleter.setCaseSensitivity(caseSensitivity)
Parameters

caseSensitivityCaseSensitivity

PySide2.QtWidgets.QCompleter.setCompletionColumn(column)
Parameters

columnint

PySide2.QtWidgets.QCompleter.setCompletionMode(mode)
Parameters

modeCompletionMode

See also

completionMode()

PySide2.QtWidgets.QCompleter.setCompletionPrefix(prefix)
Parameters

prefix – unicode

PySide2.QtWidgets.QCompleter.setCompletionRole(role)
Parameters

roleint

See also

completionRole()

PySide2.QtWidgets.QCompleter.setCurrentRow(row)
Parameters

rowint

Return type

bool

Sets the current row to the row specified. Returns true if successful; otherwise returns false .

This function may be used along with currentCompletion() to iterate through all the possible completions.

PySide2.QtWidgets.QCompleter.setFilterMode(filterMode)
Parameters

filterModeMatchFlags

See also

filterMode()

PySide2.QtWidgets.QCompleter.setMaxVisibleItems(maxItems)
Parameters

maxItemsint

PySide2.QtWidgets.QCompleter.setModel(c)
Parameters

cQAbstractItemModel

Sets the model which provides completions to model . The model can be list model or a tree model. If a model has been already previously set and it has the QCompleter as its parent, it is deleted.

For convenience, if model is a QFileSystemModel , QCompleter switches its caseSensitivity to CaseInsensitive on Windows and CaseSensitive on other platforms.

See also

completionModel() modelSorting Handling Tree Models

PySide2.QtWidgets.QCompleter.setModelSorting(sorting)
Parameters

sortingModelSorting

See also

modelSorting()

PySide2.QtWidgets.QCompleter.setPopup(popup)
Parameters

popupQAbstractItemView

Sets the popup used to display completions to popup . QCompleter takes ownership of the view.

A QListView is automatically created when the completionMode() is set to PopupCompletion or UnfilteredPopupCompletion . The default popup displays the completionColumn() .

Ensure that this function is called before the view settings are modified. This is required since view’s properties may require that a model has been set on the view (for example, hiding columns in the view requires a model to be set on the view).

See also

popup()

PySide2.QtWidgets.QCompleter.setWidget(widget)
Parameters

widgetQWidget

Sets the widget for which completion are provided for to widget . This function is automatically called when a QCompleter is set on a QLineEdit using setCompleter() or on a QComboBox using setCompleter() . The widget needs to be set explicitly when providing completions for custom widgets.

PySide2.QtWidgets.QCompleter.setWrapAround(wrap)
Parameters

wrapbool

See also

wrapAround()

PySide2.QtWidgets.QCompleter.splitPath(path)
Parameters

path – unicode

Return type

list of strings

Splits the given path into strings that are used to match at each level in the model() .

The default implementation of splits a file system path based on separator() when the sourceModel() is a QFileSystemModel .

When used with list models, the first item in the returned list is used for matching.

See also

pathFromIndex() Handling Tree Models

PySide2.QtWidgets.QCompleter.widget()
Return type

QWidget

Returns the widget for which the completer object is providing completions.

See also

setWidget()

PySide2.QtWidgets.QCompleter.wrapAround()
Return type

bool

See also

setWrapAround()