Skip to content

RangeFilterProxyModel

Qt Base Class: QSortFilterProxyModel

Signature: QSortFilterProxyModel(self, parent: Optional[PySide6.QtCore.QObject] = None) -> None

Base classes

Name Children Inherits
SortFilterProxyModel
prettyqt.core.sortfilterproxymodel

⋔ Inheritance diagram

graph TD
  1473290738416["itemmodels.RangeFilterProxyModel"]
  1473299898960["core.SortFilterProxyModel"]
  1473299903840["core.AbstractProxyModelMixin"]
  1473299890176["core.AbstractItemModelMixin"]
  1473299815024["core.ObjectMixin"]
  140713234304496["builtins.object"]
  1473289062816["QtCore.QSortFilterProxyModel"]
  1473289061840["QtCore.QAbstractProxyModel"]
  1473289050128["QtCore.QAbstractItemModel"]
  1473288842240["QtCore.QObject"]
  1473291690208["Shiboken.Object"]
  1473299898960 --> 1473290738416
  1473299903840 --> 1473299898960
  1473299890176 --> 1473299903840
  1473299815024 --> 1473299890176
  140713234304496 --> 1473299815024
  1473289062816 --> 1473299898960
  1473289061840 --> 1473289062816
  1473289050128 --> 1473289061840
  1473288842240 --> 1473289050128
  1473291690208 --> 1473288842240
  140713234304496 --> 1473291690208

🛈 DocStrings

Bases: SortFilterProxyModel

Source code in prettyqt\itemmodels\proxies\rangefilterproxymodel.py
class RangeFilterProxyModel(core.SortFilterProxyModel):
    ID = "range_filter"

    def __init__(self, min_value=None, max_value=None, **kwargs):
        self._min_value = min_value
        self._max_value = max_value
        super().__init__(**kwargs)

    def __repr__(self):
        return get_repr(self, self.get_range)

    def filterAcceptsRow(self, source_row: int, parent: core.ModelIndex) -> bool:
        column = self.filterKeyColumn()
        role = self.filterRole()
        source_model = self.sourceModel()
        idx = source_model.index(source_row, column, parent)
        value = source_model.data(idx, role)
        if self._min_value is not None and value < self._min_value:
            return False
        return self._max_value is None or value <= self._max_value

    def set_min_value(self, value: float | int | None):
        self._min_value = value
        self.invalidateRowsFilter()

    def get_min_value(self) -> float | int:
        if self._min_value is None:
            return -float("inf")
        return self._min_value

    def set_max_value(self, value: float | int):
        self._max_value = value
        self.invalidateRowsFilter()

    def get_max_value(self) -> float | int:
        if self._max_value is None:
            return float("inf")
        return self._max_value

    def set_range(self, rng: tuple[float | int | None, float | int | None]):
        self._min_value, self._max_value = rng
        self.invalidateRowsFilter()

    def get_range(self) -> tuple[float | int | None, float | int | None]:
        return (self._min_value, self._max_value)

    min_value = core.Property(
        float,
        get_min_value,
        set_min_value,
        doc="Minimum allowed value",
    )
    max_value = core.Property(
        float,
        get_max_value,
        set_max_value,
        doc="Maximum allowed value",
    )

⌗ Property table

Qt Property Type Doc
objectName QString
sourceModel QAbstractItemModel
filterRegularExpression QRegularExpression
filterKeyColumn int
dynamicSortFilter bool
filterCaseSensitivity Qt::CaseSensitivity
sortCaseSensitivity Qt::CaseSensitivity
isSortLocaleAware bool
sortRole int
filterRole int
recursiveFilteringEnabled bool
autoAcceptChildRows bool
filterMode QString Mode to use for filtering
min_value double Minimum allowed value
max_value double Maximum allowed value