【问题标题】:QTabWidget: determine pages to be QTableWidgetQTabWidget:确定页面为QTableWidget
【发布时间】:2015-12-26 06:07:30
【问题描述】:

我的 Qt 应用程序的 MainWindow 有 QTabWidget,其中每个选项卡都是一个 QTableWidget。我需要访问当前表的选定单元格(使用currentRow() 和currentColumn())。但是当我用ui->tabWidget->currentWidget() 指向表时,结果是QWidget*,所以像currentRow() 这样的方法不存在。

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

【问题讨论】:

标签: c++ qt qtablewidget qtabwidget


【解决方案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可以使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多