Anu*_*sin 7 python qt pyqt qtableview pyqt4
我在qtableview中使用QStandardItemModel.
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())
Run Code Online (Sandbox Code Playgroud)
这里,当我试图删除所选的行(即model.removeRow())我收到一个错误"TypeError:QAbstractItemModel.removeRow()的参数1有一个无效的类型".
我已经搜索了在pyqt的qtableview中删除选定行/行的正确方法.但是,我无法删除选定的行/行.
您能否在pyqt的qtableview中分享用于删除所选行/行的示例代码?
Anu*_*sin 16
方法model.removeRow(index.row())删除所选的行.
model = self.model
indices = self.tableView.selectionModel().selectedRows()
for index in sorted(indices):
model.removeRow(index.row())
Run Code Online (Sandbox Code Playgroud)
在indices变量中我们得到所选行,然后我们删除该行.
要删除我们选择的tableview中的多行:
index_list = []
for model_index in self.tableView.selectionModel().selectedRows():
index = QtCore.QPersistentModelIndex(model_index)
index_list.append(index)
for index in index_list:
self.model.removeRow(index.row())
Run Code Online (Sandbox Code Playgroud)