Модель PyQt4 QTableView на основе

Я пытаюсь отобразить некоторую простую информацию из базы данных SQLite в QTableView. Я следил за одним ответом от SO, и для себя это работающий. Когда я пытаюсь внедрить тот же код в свой графический интерфейс (просто главное окно с объектом 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, если это имеет значение. Спасибо.


person ivica    schedule 01.07.2012    source источник
comment
Хорошо, позвольте мне перефразировать это; Как отобразить содержимое SQLite в QList или QTableView, созданном в QT Designer?   -  person ivica    schedule 03.07.2012


Ответы (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()

и это работает ;)

person ivica    schedule 09.07.2012