从QTableView获取数据

时间:2015-07-18 15:49:58

标签: python c++ qt user-interface python-3.x

我正在尝试从PyQT中的QTableView读取数据。我已经阅读了几篇帖子,但我不能成功。

我正在使用这个功能,在其中,我评论了所有失败的不同方式:

    def test(self):

    mymodel=self.resultTableView.model()  
    rows=mymodel.rowCount(self)
    columns=mymodel.columnCount(self)
    print rows
    print columns

#1st way
#         index = self.resultTableView.indexAt(QPoint(1,1))
#         x=self.resultTableView.model().data(index,QAbstractItemModel)

#2nd way
#         myindex=self.resultTableView.model().index(1, 1, QModelIndex())
#         x=self.resultTableView.model().data(myindex,self)

#3rd way
    x=self.resultTableView.model().data(self.resultTableView.model().index(0,2)).toString()
    index = self.resultTableView.currentIndex() ;
    x = index.sibling(index.row(),0)
    print type(x)
    print (x)

第一个和第二个打印了类型=无和无项目 和第三印刷类型

  

class'PyQt4.QtCore.QModelIndex'

     

PyQt4.QtCore.QModelIndex对象位于0x000000001060E4C0

如果我在初始化x时尝试使用.toString()函数,我会崩溃,如果我尝试str(),我会得到:

  

输入'str'

     

PyQt4.QtCore.QModelIndex对象位于0x000000001060E4C0

有没有标准的方法?当我尝试使用

时,我也会崩溃
model=self.resultTableView.model()

1 个答案:

答案 0 :(得分:1)

我正在使用PyQt5.5.1和Python 3.4,并且我已经被类似的问题困惑了一段时间,因为我从stackoverflow或某个地方获得的大多数答案实际上要么没有解决问题,要么基于PyQt的旧版本。

以下是我的所作所为:

  1. 将激活,按下或单击的信号连接到要处理所选行中数据的插槽: 示例:self.ui.tableView.pressed.connect(self .__ rowselect) 该信号将QModelIndex的实例传递给槽函数。
  2. 在插槽中继续选择的数据(QModelIndex)。 例:     def __rowselect(self,index):          打印(index.row(),index.sibling(index.row(),1)。数据()) 您可以使用index.sibling(index.row(),index.column())。data()或index.data()来获取所选CELL的数据。
  3. 希望有所帮助!