6
我正在使用QStandardItemModel爲我的qtableview。如何刪除pyqt中的qtableview中的行/行?
import ui_my_viewlogs
import os
from PyQt4 import QtCore, QtGui
class my_viewlogs(QtGui.QDialog, ui_my_viewlogs.Ui_viewlogs):
def __init__(self):
super(my_viewlogs, self).__init__()
self.setupUi(self)
self.model = QtGui.QStandardItemModel()
self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.header_names = ['abc', 'def', 'ghi', 'kjl', 'mno', 'pqr']
self.model.setHorizontalHeaderLabels(self.header_names)
self.tableView.verticalHeader().setVisible(False)
self.tableView.setShowGrid(False)
self.selectionModel = self.tableView.selectionModel()
self.tableView.customContextMenuRequested.connect(self.open_menu)
self.tableView.setModel(self.model)
self.tableView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
def open_menu(self, position):
menu = QtGui.QMenu()
remove_selected_item_icon = QtGui.QIcon()
remove_selected_item_icon.addPixmap(QtGui.QPixmap(":/images /Images/deleteSelected.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
remove_selected_item = menu.addAction(remove_selected_item_icon, "Remove selected item(s) ")
if action == remove_selected_item:
model = self.model
indices = self.tableView.selectionModel().selectedRows()
for index in sorted(indices):
model.removeRow(index.row(), QtCore.QModelIndex())
這裏的時候,我試圖刪除所選行(即model.removeRow())我得到一個錯誤「類型錯誤:參數QAbstractItemModel.removeRow 1()的類型無效」。
我已經搜索了很多正確的方式刪除pyqt的qtableview中選定的行/行。但是,我無法刪除選定的行/行。
你可以請分享一個示例代碼刪除pyqt的qtableview中選定的行/行嗎?
爲什麼你傳遞'QtCore.QModelIndex'類removeRow?如果有的話它應該是一個實例,即。 'QtCore.QModelIndex()',但這是默認的,所以最好把它全部刪除。 –
@Tim即使我使用QtCore.QModelIndex()或一起刪除它...我仍然得到相同的錯誤.... –
@tim謝謝你糾正我的錯字錯誤。 –