从QListView中的选定项目获取数据

发布于 2021-01-29 16:12:36

我用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和颜色?

抱歉,我是一个非常初学者。太初学者,我看不懂阅读文档:(

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    尽管我不太了解您要做什么,但我向您展示了您的两个问题的答案。

    例如,我们有一个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_()
    

    您可以遍历查询并访问数据。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看