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 findChildrenQObject 的方法 @Danh 我明白了,只是表示我没有在方法列表中看到它,QTabWidget可以使用它

以上是关于QTabWidget:确定页面为QTableWidget的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QWidget 在 QTabWidget 中包含 QList

7.4 QtabWidget多页面切换视图

动态添加 QTableView 到动态创建的标签页 (QTabWidget) [已解决]

Qt中QTabWidget动态添加页面的问题

如何制作没有页面的 QTabWidget

用新的小部件替换 QTabWidget 的页面