基于 PyQt4 QTableView 模型

Posted

技术标签:

【中文标题】基于 PyQt4 QTableView 模型【英文标题】:PyQt4 QTableView model based 【发布时间】:2012-07-01 23:25:33 【问题描述】:

我正在尝试将 SQLite 数据库中的一些简单信息显示到 QTableView 中。我关注了one answer from SO,就其本身而言,它正在工作。当我尝试在我的 GUI 中实现相同的代码(只是一个带有 QTableView 对象的简单主窗口)时,它什么也没有显示。代码如下:

from PyQt4 import QtCore, QtGui
from gui import Ui_MainWindow
from dialog import Ui_Dialog
from PyQt4.QtSql import QSqlQueryModel,QSqlDatabase,QSqlQuery

import sys

class Glavni(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Glavni, self).__init__()
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()

        #QtCore.QObject.connect(self.ui.actionRegistar, QtCore.SIGNAL("triggered()"), self.popup)
        db = QSqlDatabase.addDatabase("QSQLITE")
        db.setDatabaseName("baza.db")
        db.open()

        projectModel = QSqlQueryModel()
        projectModel.setQuery("select name from people",db)

        projectView = QtGui.QTableView()
        projectView.setModel(projectModel)
        projectView.show()

    def popup(self):
        dialog = QtGui.QDialog()
        dialog.show()

class Dialog(QtGui.QDialog):
    def __init__(self,parent=None):
        super(Dialog,self).__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.show()

def main():
    app = QtGui.QApplication(sys.argv)
    prozor = Glavni()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

我做错了什么? QListView 在 QT Designer 中的名称是 lista,如果这是相关的话。谢谢。

【问题讨论】:

好的,让我换个说法;如何在 QT Designer 制作的 QList 或 QTableView 中显示 SQLite 内容? 【参考方案1】:
projectView = QtGui.QTableView() #THIS part is wrong if the GUI is designed through Designer
projectView.setModel(projectModel)
projectView.show()

正确的代码是这样的:

projectView = self.ui.myList #or some other name, which is the SAME AS that object name in   Designer
projectView.setModel(projectModel)
projectView.show()

它有效;)

【讨论】:

以上是关于基于 PyQt4 QTableView 模型的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QLineEdit 放入 QTableView 单元格 PyQt4?

如何在 Pyqt4 中设置 QTableView 标头名称

PyQt4中的QTableView选定元素

PyQt4 qTableView 对齐

在 qtableview pyqt4 python 中使用图像委托?

如何在pyqt4的右侧对齐qtableview行?