Skip to content

Completer

Qt Base Class: QCompleter

Signature: QCompleter(self, completions: Sequence[str], parent: Optional[PySide6.QtCore.QObject] = None) -> None QCompleter(self, model: PySide6.QtCore.QAbstractItemModel, parent: Optional[PySide6.QtCore.QObject] = None) -> None QCompleter(self, parent: Optional[PySide6.QtCore.QObject] = None) -> None

Base classes

Name Children Inherits
ObjectMixin
prettyqt.core.object
QCompleter
PySide6.QtWidgets
QCompleter(self, completions: Sequence[str], parent: Optional[PySide6.QtCore.QObject] \= None) -> None

Subclasses

Class Module Description
SubsequenceCompleter prettyqt.custom_widgets.subsequencecompleter

⋔ Inheritance diagram

graph TD
  1473296325184["widgets.Completer"]
  1473299815024["core.ObjectMixin"]
  140713234304496["builtins.object"]
  1473293754608["QtWidgets.QCompleter"]
  1473288842240["QtCore.QObject"]
  1473291690208["Shiboken.Object"]
  1473299815024 --> 1473296325184
  140713234304496 --> 1473299815024
  1473293754608 --> 1473296325184
  1473288842240 --> 1473293754608
  1473291690208 --> 1473288842240
  140713234304496 --> 1473291690208

🛈 DocStrings

Bases: ObjectMixin, QCompleter

Completions based on an item model.

Source code in prettyqt\widgets\completer.py
class Completer(core.ObjectMixin, widgets.QCompleter):
    """Completions based on an item model."""

    path_updated = core.Signal(str)

    def _get_map(self):
        maps = super()._get_map()
        maps |= {
            "caseSensitivity": constants.CASE_SENSITIVITY,
            "completionMode": COMPLETION_MODE,
            "modelSorting": SORT_MODE,
            "filterMode": constants.MATCH_FLAGS,
        }
        return maps

    def splitPath(self, path: str) -> list[str]:
        self.path_updated.emit(path)
        return super().splitPath(path)

    def get_completions(self) -> list[str]:
        completions = []
        # count = self.completionCount()
        # for i in range(count):
        #     self.setCurrentRow(i)
        #     completions.append(self.currentCompletion())
        # according to docs, completionCount should be avoided. Not sure if thats true.
        i = 0
        while self.setCurrentRow(i):
            completions.append(self.currentCompletion())
            i += 1
        return completions

    def set_strings(self, strings: list[str]):
        model = core.StringListModel(strings)
        self.setModel(model)

    def set_sort_mode(self, mode: SortModeStr | widgets.QCompleter.ModelSorting | None):
        """Set sort mode to use.

        Args:
            mode: sort mode to use
        """
        if mode is None:
            mode = "unsorted"
        self.setModelSorting(SORT_MODE.get_enum_value(mode))

    def get_sort_mode(self) -> SortModeStr:
        """Return current sort mode.

        Returns:
            sort mode
        """
        return SORT_MODE.inverse[self.modelSorting()]

    def set_completion_mode(
        self, mode: CompletionModeStr | widgets.QCompleter.CompletionMode
    ):
        """Set completion mode to use.

        Args:
            mode: completion mode to use
        """
        self.setCompletionMode(COMPLETION_MODE.get_enum_value(mode))

    def get_completion_mode(self) -> CompletionModeStr:
        """Return current completion mode.

        Returns:
            completion mode
        """
        return COMPLETION_MODE.inverse[self.completionMode()]

    def set_filter_mode(self, mode: constants.FilterModeStr | constants.MatchFlag):
        """Set filter mode to use.

        Args:
            mode: filter mode to use
        """
        self.setFilterMode(constants.FILTER_MODES.get_enum_value(mode))

    def get_filter_mode(self) -> constants.FilterModeStr:
        """Return current filter mode.

        Returns:
            filter mode
        """
        return constants.FILTER_MODES.inverse[self.filterMode()]

    def set_case_sensitive(self, state: bool):
        """Set case sensitivity.

        Args:
            state: case sensitive

        """
        sensitivity = (
            constants.CaseSensitivity.CaseSensitive
            if state
            else constants.CaseSensitivity.CaseInsensitive
        )
        self.setCaseSensitivity(sensitivity)

    def is_case_sensitive(self) -> bool:
        """Return case sensitivity.

        Returns:
            case sensitivity
        """
        return self.caseSensitivity() == constants.CaseSensitivity.CaseSensitive

    def set_completion_role(
        self, role: constants.ItemDataRoleStr | constants.ItemDataRole | int
    ):
        role = constants.ITEM_DATA_ROLE[role] if isinstance(role, str) else role
        self.setCompletionRole(role)

get_completion_mode() -> CompletionModeStr

Return current completion mode.

Source code in prettyqt\widgets\completer.py
def get_completion_mode(self) -> CompletionModeStr:
    """Return current completion mode.

    Returns:
        completion mode
    """
    return COMPLETION_MODE.inverse[self.completionMode()]

get_filter_mode() -> constants.FilterModeStr

Return current filter mode.

Source code in prettyqt\widgets\completer.py
def get_filter_mode(self) -> constants.FilterModeStr:
    """Return current filter mode.

    Returns:
        filter mode
    """
    return constants.FILTER_MODES.inverse[self.filterMode()]

get_sort_mode() -> SortModeStr

Return current sort mode.

Source code in prettyqt\widgets\completer.py
def get_sort_mode(self) -> SortModeStr:
    """Return current sort mode.

    Returns:
        sort mode
    """
    return SORT_MODE.inverse[self.modelSorting()]

is_case_sensitive() -> bool

Return case sensitivity.

Source code in prettyqt\widgets\completer.py
def is_case_sensitive(self) -> bool:
    """Return case sensitivity.

    Returns:
        case sensitivity
    """
    return self.caseSensitivity() == constants.CaseSensitivity.CaseSensitive

set_case_sensitive(state: bool)

Set case sensitivity.

Parameters:

Name Type Description Default
state bool

case sensitive

required
Source code in prettyqt\widgets\completer.py
def set_case_sensitive(self, state: bool):
    """Set case sensitivity.

    Args:
        state: case sensitive

    """
    sensitivity = (
        constants.CaseSensitivity.CaseSensitive
        if state
        else constants.CaseSensitivity.CaseInsensitive
    )
    self.setCaseSensitivity(sensitivity)

set_completion_mode(mode: CompletionModeStr | widgets.QCompleter.CompletionMode)

Set completion mode to use.

Parameters:

Name Type Description Default
mode CompletionModeStr | CompletionMode

completion mode to use

required
Source code in prettyqt\widgets\completer.py
def set_completion_mode(
    self, mode: CompletionModeStr | widgets.QCompleter.CompletionMode
):
    """Set completion mode to use.

    Args:
        mode: completion mode to use
    """
    self.setCompletionMode(COMPLETION_MODE.get_enum_value(mode))

set_filter_mode(mode: constants.FilterModeStr | constants.MatchFlag)

Set filter mode to use.

Parameters:

Name Type Description Default
mode FilterModeStr | MatchFlag

filter mode to use

required
Source code in prettyqt\widgets\completer.py
def set_filter_mode(self, mode: constants.FilterModeStr | constants.MatchFlag):
    """Set filter mode to use.

    Args:
        mode: filter mode to use
    """
    self.setFilterMode(constants.FILTER_MODES.get_enum_value(mode))

set_sort_mode(mode: SortModeStr | widgets.QCompleter.ModelSorting | None)

Set sort mode to use.

Parameters:

Name Type Description Default
mode SortModeStr | ModelSorting | None

sort mode to use

required
Source code in prettyqt\widgets\completer.py
def set_sort_mode(self, mode: SortModeStr | widgets.QCompleter.ModelSorting | None):
    """Set sort mode to use.

    Args:
        mode: sort mode to use
    """
    if mode is None:
        mode = "unsorted"
    self.setModelSorting(SORT_MODE.get_enum_value(mode))

⌗ Property table

Qt Property Type Doc
objectName QString
completionPrefix QString
modelSorting QCompleter::ModelSorting
filterMode QFlags
completionMode QCompleter::CompletionMode
completionColumn int
completionRole int
maxVisibleItems int
caseSensitivity Qt::CaseSensitivity
wrapAround bool