QTabWidget:确定页面为QTableWidget
Posted
技术标签:
【中文标题】QTabWidget:确定页面为QTableWidget【英文标题】:QTabWidget: determine pages to be QTableWidget 【发布时间】:2015-12-26 06:07:30 【问题描述】:我的 Qt 应用程序的 MainWindow 有 QTabWidget,其中每个选项卡都是一个 QTableWidget。我需要访问当前表的选定单元格(使用currentRow()
和currentColumn()
)。但是当我用ui->tabWidget->currentWidget()
指向表时,结果是QWidget*,所以像currentRow()
这样的方法不存在。
有没有办法确定QTabWidget的所有页面都是QTableWidget类的成员?
【问题讨论】:
你为什么不使用QObject::findChildren
来检索QTableWidget
【参考方案1】:
您可以使用qobject_cast
来检查QObject
类型的对象是否是T
类型的对象继承自QObject
QWidget *widget = ui->tabWidget->currentWidget();
QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget);
if (tableWidget != 0)
/// Do work
顺便说一句,你可以在你的标签页中获取所有QTableWidget
QList<QTableWidget *> allTables = ui->tabWidget->findChildren<QTableWidget *>();
【讨论】:
谢谢!我是 Qt 新手,在 QTabWidget 的文档中没有看到findChildren()
,所以变得很困惑 :)
@Tami qobject_cast
实际上可以被认为是 Java 语言中的 instanceof
运算符。在 Qt 中非常好用!
@Tami findChildren
是QObject
的方法
@Danh 我明白了,只是表示我没有在方法列表中看到它,QTabWidget
可以使用它以上是关于QTabWidget:确定页面为QTableWidget的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QWidget 在 QTabWidget 中包含 QList