QTabWidget:确定页面为QTableWidget

QTabWidget: determine pages to be QTableWidget

我的 Qt 应用程序的主窗口有 QTabWidget,其中每个选项卡都是一个 QTableWidget。我需要访问当前 table 的选定单元格(使用 currentRow()currentColumn())。但是,当我使用 ui->tabWidget->currentWidget() 指向 table 时,结果是 QWidget*,因此 currentRow() 之类的方法不存在。

有没有办法确定QTabWidget的所有页面都是QTableWidget的成员class?

您可以使用 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 *>();