亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5295 | 回復(fù): 2
打印 上一主題 下一主題

如何通過QAbstractTableModel實(shí)現(xiàn)checkbox復(fù)選框 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-01-26 22:25 |只看該作者 |倒序?yàn)g覽
本帖最后由 liaozd 于 2014-01-26 22:33 編輯

我想通過flag的方式實(shí)現(xiàn)第一列數(shù)據(jù)有checkbox,我嘗試了一下,但是不明白是哪里出錯(cuò)了。

我還想做的是,得到那些被復(fù)選框選中的坐標(biāo)
  1. from PyQt4.QtCore import *
  2. from PyQt4.QtGui import *
  3. import sys

  4. data = [['00','01','02'],
  5.          ['10','11','12'],
  6.          ['20','21','22']]

  7. class MainWindow(QWidget):
  8.     def __init__(self, parent=None, *args):
  9.         super(MainWindow, self).__init__(parent)
  10.         
  11.         clipTableWidget = QTableWidget()
  12.         self.model = TModel(data, self)
  13.         clipTableView = QTableView()
  14.         clipTableView.setModel(self.model)
  15.         layout = QVBoxLayout()
  16.         layout.addWidget(clipTableView)
  17.         self.setLayout(layout)

  18.                
  19. class TModel(QAbstractTableModel):

  20.     def __init__(self, datain, parent=None):
  21.         super(TModel, self).__init__(parent)
  22.         self.arraydata = datain

  23.     def rowCount(self, parent=QModelIndex()):
  24.         return len(self.arraydata)

  25.     def columnCount(self, parent=QModelIndex()):
  26.         return len(self.arraydata[0])

  27.     def data(self, index, role):
  28.         if not index.isValid():
  29.             return QVariant()
  30.         elif role != Qt.DisplayRole:
  31.             return QVariant()
  32.         return QVariant(self.arraydata[index.row()][index.column()])
  33.    
  34.      # 以下是我的嘗試,我不知道哪里錯(cuò)了,第一列無法顯示出有復(fù)選框   
  35.     def flags(self, index):
  36.         if not index.isValid():
  37.             return QVariant()
  38.         elif index.column() == 1:
  39.             return Qt.ItemIsSelectable|Qt.ItemIsEnabled|Qt.ItemIsUserCheckable
  40.         return QVariant()
  41.    


  42. if __name__ == '__main__':
  43.    
  44.     app = QApplication(sys.argv)
  45.     mainwindow = MainWindow()
  46.     mainwindow.show()
  47.     sys.exit(app.exec_())
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2014-01-26 23:08 |只看該作者
幫頂                           

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-01-27 14:34 |只看該作者
回復(fù) 1# liaozd

網(wǎng)上找了一下,但是還是不是很明確原理,和如何得到哪些row是checked的?
  1. from PyQt4.QtCore import *
  2. from PyQt4.QtGui import *
  3. import sys

  4. my_array = [['00','01','02'],
  5.             ['10','11','12'],
  6.             ['20','21','22']]

  7. def main():
  8.     app = QApplication(sys.argv)
  9.     w = MyWindow()
  10.     w.show()
  11.     sys.exit(app.exec_())

  12. class MyWindow(QWidget):
  13.     def __init__(self, *args):
  14.         QWidget.__init__(self, *args)
  15.         tablemodel = MyTableModel(my_array, self)
  16.         tableview = QTableView()
  17.         tableview.setModel(tablemodel)
  18.         layout = QVBoxLayout(self)
  19.         layout.addWidget(tableview)
  20.         self.setLayout(layout)

  21. class MyTableModel(QAbstractTableModel):
  22.     def __init__(self, datain, parent=None, *args):
  23.         QAbstractTableModel.__init__(self, parent, *args)
  24.         self.arraydata = datain
  25.         self._checked=[False for i in  xrange(self.rowCount(self))]
  26.         print self._checked

  27.     def rowCount(self, parent):
  28.         return len(self.arraydata)

  29.     def columnCount(self, parent):
  30.         return len(self.arraydata[0])

  31.     def flags(self, index):
  32.         if not index.isValid():
  33.             return
  34.         elif index.column() == 0:
  35.             return Qt.ItemIsEnabled|Qt.ItemIsUserCheckable
  36.         return Qt.ItemIsSelectable|Qt.ItemIsEditable|Qt.ItemIsEnabled

  37.     def data(self, index, role):

  38.         if not index.isValid():
  39.             return QVariant()
  40.         elif role == Qt.DisplayRole:
  41.             return QVariant(self.arraydata[index.row()][index.column()])
  42.         elif index.column() == 0 and role==Qt.CheckStateRole:
  43.             return self._checked[index.row()]
  44.         return None # what this for? I am not sure.

  45.     def setData(self, index, value, role):
  46.         if not index.isValid() or role!=Qt.CheckStateRole:
  47.             return False
  48.         elif index.column()==0:
  49.             self._checked[index.row()]=value
  50.             self.dataChanged.emit(index, index)
  51.             print self._checked
  52.         return True

  53. if __name__ == "__main__":
  54.     main()
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP