我有两个TableView
的视图,我想获取最后一个选中的表,所以上次选择了表格的行。我试过了:
table.isFocused()
但是对于两个表都返回false,我猜是因为我选择了一行而不是表本身。
table.getFocusModel().getFocusedItem() != null
,但如果我在两个表中选择一行,则对两个表都返回true。
那么我怎么能得到最后一个选中的表格行,我有一个肮脏的解决方案,定义一个枚举并为tableView
的选择模型添加一个监听器,但我认为有一种更简单的方法,你有什么想法吗?对我来说,最好的方法是为一个tableview返回true,为另一个返回false,当然对于最后选择的方式为true。
答案 0 :(得分:0)
我看到了下一个解决方案:你有一个临时变量,它将指向最后一个选定的节点,你会收听2个表视图以获得聚焦属性:
QSignalSpy spy(&foo, SIGNAL(ready()));
connect(&foo, SIGNAL(ready()), &bar, SLOT(work()), Qt::QueuedConnection);
foo.emitReady();
QCOMPARE(spy.count(), 1); // QSignalSpy uses Qt::DirectConnection
QCOMPARE(bar.received, false); // bar did not receive the signal, but that is normal: there is no active event loop
qApp->processEvents(); // Manually trigger event processing ...
QCOMPARE(bar.received, true); // bar receives the signal only if QTEST_MAIN() is used
在' lastSelectedTable'之下的任何时间你有一个真正最新的焦点表的参考。