小编Max*_*mus的帖子

如何在数据库中使用QSortFilterProxyModel?

我有一个 QTableWidget,其中包含数据库中的数据,我想实时搜索其内容(当我输入字母时,他会向我显示结果)?欢迎每一个帮助。多谢。

这是我的代码:

class Filter:
    def __init__(self):
        object.__init__(self)
        self.db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
        self.db.setDatabaseName("baza.db")
        self.filter_model= QSortFilterProxyModel()



    def sqlPodaci(self,okvir):
        okvir.setObjectName("Okvir aplikacije")
        okvir.resize(700,320)
        line_edit = QLineEdit(okvir)
        line_edit.setGeometry(20, 20, 205, 23)
        self.tableWidget = QtWidgets.QTableWidget(okvir)
        self.tableWidget.setGeometry(QtCore.QRect(20, 50, 620, 201))
        self.tableWidget.setAlternatingRowColors(True)
        self.tableWidget.setRowCount(3)
        self.tableWidget.horizontalHeader().setVisible(True)
        self.tableWidget.verticalHeader().setVisible(False)

        ###
        self.filter_model.setFilterKeyColumn(1)
        line_edit.textChanged.connect(self.filter_model.setFilterRegExp)
        ####
        self.Ucitavanje_podataka()
Run Code Online (Sandbox Code Playgroud)

这是从数据库读取数据的代码:

def Ucitavanje_podataka(self):

status = self.db.open()
if status == False:
    QtWidgets.QMessageBox.warning(self, "Error", self.db.lastError().text(), QtWidgets.QMessageBox.Discard)
else:
    self.tableWidget.setColumnCount(6)
    self.tableWidget.setHorizontalHeaderLabels(['Id','Ime','Prezime','Godine','Adresa','Plata'])

    row = 0
    sql = " SELECT * FROM Zaposleni"
    query = QtSql.QSqlQuery(sql)
    while query.next():
        self.tableWidget.insertRow(row)
        ID=QtWidgets.QTableWidgetItem(str(query.value(0)))
        Ime = QtWidgets.QTableWidgetItem(str(query.value(1)))
        Prezime …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-3.x qsortfilterproxymodel pyqt5

3
推荐指数
1
解决办法
1943
查看次数

标签 统计

pyqt ×1

pyqt5 ×1

python ×1

python-3.x ×1

qsortfilterproxymodel ×1