【发布时间】:2014-12-29 10:42:54
【问题描述】:
我有一个 QTableView,上面有一个按钮来更新选定的行 更新按钮调用一个Form来更新记录(其他类的Qdialog)
更新记录后,我将焦点移回 Qtableview,但我找不到它 将焦点放在选择栏上?
表格回来了,但我总是需要在表格中单击才能恢复选择栏?
有人知道怎么做吗?
我还希望将选择栏放在刚刚更新的记录上
我已经用 setfocus/activatewindow 尝试过了……但是没有给我想要的结果:
下面是一些示例代码:
class KL_browse(QDialog, ui_kl_browse.Ui_kl_browse):
def __init__(self):
super(KL_browse, self).__init__()
# query = QSqlQuery()
# query.exec_("""SELECT * FROM klanten ORDER BY klantnaam""")
self.setupUi(self)
self.model = QSqlTableModel(self)
self.model.setTable("KLANTEN")
# self.model.setSort(1, Qt.AscendingOrder)
self.model.select()
self.tableView.setModel(self.model)
self.tableView.setSelectionMode(QTableView.SingleSelection)
self.tableView.setSelectionBehavior(QTableView.SelectRows)
# self.view.setColumnHidden(ID, True)
# index = self.tableView.model().index(0, 1)
# self.tableView.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate)
self.tableView.horizontalHeader().setSectionsMovable(True)
self.tableView.horizontalHeader().setDragEnabled(True)
self.tableView.horizontalHeader().setDragDropMode(QAbstractItemView.InternalMove)
self.tableView.horizontalHeader().setSortIndicator(1,0)
self.tableView.selectRow(0)
self.tableView.selectColumn(1)
index = self.tableView.model().index(0, 1)
self.tableView.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate)
# Volgende code is om de actie op knoppen en dergelijke op te vangen
self.add_button.clicked.connect(self.test_win_start)
self.Del_button.clicked.connect(self.del_record)
def del_record(self):
index = self.tableView.currentIndex()
self.model.removeRow(index.row())
self.model.submitAll()
self.model.select()
self.tableView.activateWindow()
self.tableView.setFocus()
def test_win_start(self):
self.test_win = Test_win()
self.test_win.exec_()
self.model.select()
self.tableView.activateWindow()
del_record 删除一条记录,但焦点没有回到选择栏! test_win_start 调用更新表单
【问题讨论】:
-
您解决了this 吗?显然,修复程序现在在此代码中,但是为什么不选择一个答案:) 更重要的是,您的格式被破坏了。选择您的代码并按 ctrl-k 自动格式化。
标签: python qt pyqt qtableview qtgui