我有一个带有多个标签的QTabWidget,每个标签都包含一个带数字的QTableWidget。在这个QTabWidget之外,我有一个按钮。按下按钮时,应处理当前选定的小部件。 QTableWidgets在结构上是相同的,它们只显示数字,如果我有一个指向其中一个小部件的指针,我无法推断它来自哪个标签。
识别当前选择的窗口小部件的一种简单方法是调用currentIndex()
。但是当我重新排序设计器中的标签并且可能无法使用可移动标签时,这将会中断。
另一种方法是使用currentIndex()
和tabText(int index)
。像这样我有一个稳定的方法来找出当前选择的选项卡。这样做的缺点是我依赖于拥有唯一的标签文本,而且我一般不喜欢依赖UI属性来实现功能。
我现在的解决方案是为每个Widget提供一个不同的可访问名称,然后我可以这样读出:
QWidget* widget = tabWidget->currentWidget();
QString* name = widget->accessibleName();
这很有用,但我想知道是否有更好的解决方案,例如Qt::UserRole
可以分配给QTableWidget中的任何单元格。