从QListView中的选定项目获取数据
我用QSqlTableModel填充QListView。
projectModel = QSqlTableModel()
projectModel.setTable("project")
projectModel.select()
projectView = QListView()
projectView.setModel(projectModel)
projectView.setModelColumn(1)
- 编辑我的措辞。--
说我的QSqlTableModel有3列。例如,(0)代表ID,(1)代表名字,(2)代表颜色。
在我的QListView中,我显示的是第1列,因此仅显示名称。然后,我选择了1个项目。如何获取该商品的ID和颜色?
抱歉,我是一个非常初学者。太初学者,我看不懂阅读文档:(
-
尽管我不太了解您要做什么,但我向您展示了您的两个问题的答案。
例如,我们有一个sqlite3数据库“ sqlitedb.rdb”和一个表名“ info”,
CREATE TABLE info ( id integer PRIMARY KEY AUTOINCREMENT DEFAULT NULL, name TEXT(20) DEFAULT NULL, country TEXT(20) DEFAULT NULL, age integer)
并有一些数据,
INSERT INTO info (name,country,age) VALUES ('Leroy Hale','San Marino','46'); INSERT INTO info (name,country,age) VALUES ('William Coleman','Namibia','50'); INSERT INTO info (name,country,age) VALUES ('Phelan Waller','Belgium','43'); INSERT INTO info (name,country,age) VALUES ('Kato Martin','Virgin Islands, British','21'); INSERT INTO info (name,country,age) VALUES ('Jameson Mccoy','United Arab Emirates','45'); INSERT INTO info (name,country,age) VALUES ('Fulton Reeves','Belarus','34'); INSERT INTO info (name,country,age) VALUES ('Calvin Love','Morocco','28'); INSERT INTO info (name,country,age) VALUES ('Peter Solis','Bhutan','31'); INSERT INTO info (name,country,age) VALUES ('Connor Stephenson','Dominican Republic','26'); INSERT INTO info (name,country,age) VALUES ('Aristotle Smith','Chad','45');
现在,
我只想显示ID和名称(第0列和第1列),我该怎么做?
为此,您可以
from PyQt4.QtSql import QSqlQueryModel,QSqlDatabase,QSqlQuery from PyQt4.QtGui import QTableView,QApplication import sys app = QApplication(sys.argv) db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName("sqlitedb.rdb") db.open() projectModel = QSqlQueryModel() projectModel.setQuery("select name,age from info",db) projectView = QTableView() projectView.setModel(projectModel) projectView.show() app.exec_()
您可以使用查询设置要显示的字段/列。
和,
如何从所选项目的不同列中检索信息?
您可以浏览查询结果并获取数据,例如,
from PyQt4.QtSql import QSqlDatabase,QSqlQuery from PyQt4.QtCore import QCoreApplication import sys app = QCoreApplication(sys.argv) db = QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName("sqlitedb.rdb") db.open() query = QSqlQuery() query.exec_("select * from info") while (query.next()): id = query.value(0).toInt() name = query.value(1).toString() country = query.value(2).toString() age = query.value(3).toInt() print "name = %s \ncountry = %s" % (name,country) app.exec_()
您可以遍历查询并访问数据。