how to make a cell in a QTableWidget read only?

試著忘記壹切 提交于 2019-12-05 05:09:58

I played a little with the code and read some more documentation the answer to the problem is

def createtable(self):
     rows = self.tableName.rowCount()
     columns = self.tableName.columnCount()
     for i in range(rows):
         for j in range(columns):
             item = self.cell("text")
             # execute the line below to every item you need locked
             item.setFlags(QtCore.Qt.ItemIsEnabled)
             self.ui.tableName.setItem(i, j, item)

The solution is the line "item.setFlags(QtCore.Qt.ItemIsEnabled)", you use it to set the cell property QtCore.Qt.ItemIsEnabled to disabled, so you can't select or edit the cell

You can change a number of other properties this way at runtime as per documentarion on http://doc.qt.io/archives/qt-4.8/qt.html under the section Qt::ItemFlag

as mentioned in a comment by Sven on the second answer to this question, if you have a static number of rows and columns in your QTableWidgetItem you can select the properties of the cells with Qtdesigner if you use it to create the screens for your application

The editing status of a QTableWidgetItem is never entered when there are no Edit Triggers:

self.tableName.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)

Like Sven Krüger's answer, you can also use this methods for PyQt5:

self.tableWidget.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!