我有一个带有以下列的 QTableWidget:
Username Password URL Status
+----------+-----------+---------+---------+
| user1 | passwd1 | url.com | OK |
| user2 | passwd2 | url.com | FAIL |
+----------+-----------+---------+---------+
在我的应用程序的工作人员QThread
中,发出一个信号,其中包含表中显示的数据。但是,此数据需要稍后更新(尤其是“状态”列)。
例如,我希望能够仅更新第二行。现在,到目前为止,我将遍历表中的所有行,然后尝试将某个唯一字段(例如用户名)与软件发送的数据进行匹配。因此,如果需要将第 2 行的状态从“FAIL”更新为“RETRY”,则发送到 GUI 线程的信号将包含用户名和状态字符串。然后我将比较这两个字符串(来自信号的字符串,即 QThread 与当前在表中的字符串),如果匹配,则更新表。希望这是有道理的。
问题是,我想知道这是否是一个可行的解决方案?还有其他的吗?我已经考虑向 QTableWidget 添加另一个“隐藏”列,该列将包含每个 QThread 生成的随机字符字符串,然后将对其进行更新。但原理还是一样的。
任何人都可以给我任何指示吗?
编辑:每个请求添加代码:
这是我的 GUI 线程代码(搜索和更新部分):
def writeToMainTable(self, param):
username = param['username']
statusText = param['statusText']
for i in xrange(self.mainTable.currentRowCount()):
if username == self.mainTable.item(i, 0).text():
found = True
activerow = i
if found:
if statusText is not None: self.mainTable.setItem(activerow, 3, QTableWidgetItem(statusText))
虽然 QThread 有这样的东西:
def sendToTable(self, param): #param is a dict here as well
self.mainsig.emit(param)