【问题标题】:C++ QT How to access a public class member of a QWidget from a QMainWindow LayoutC ++ QT如何从QMainWindow布局访问QWidget的公共类成员
【发布时间】:2019-01-19 17:47:23
【问题描述】:

正如标题所说,我想访问从 QMainWindow 中的 QGridLayout 继承 QWidget 的类的成员变量。 我可以访问 QWidget 类的成员函数,但我无法访问我的“播放器”类的成员。

我知道,“->widget()”只返回一个 QWidget*。是否有另一种方法可以返回位于此坐标处的真实类?

This question 显示只访问 QWidget 的函数,而不是 QWidget 继承的类。

QMainWindow类的代码:

...
for(int row = 0; row < rowsCount; row++) {
    for(int col = 0; col < colsCount; col++) {
       QWidget *player = this->ui->gridLayout->itemAtPosition(row, col)->widget();
       player->[HERE I WANT TO ACCESS THE PUBLIC MEMBER]
    }
}
...

【问题讨论】:

    标签: c++ qt qwidget qlayout


    【解决方案1】:

    如果我很理解您只需将您的小部件动态转换为播放器并通过安全检查您是否真的有播放器:

    QWidget *widget = this->ui->gridLayout->itemAtPosition(row, col)->widget();
    Player * player = dynamic_cast<Player *>(widget);
    
    if (player != NULL) {
       ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2013-03-25
      • 2015-09-07
      • 2012-10-06
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多