C ++ QT如何从QMainWindow布局访问QWidget的公共类成员

时间:2019-01-19 17:47:23

标签: c++ qt qwidget qlayout

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

我知道,“-> 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]
    }
}
...

1 个答案:

答案 0 :(得分:0)

如果我很了解您,只需要将您的窗口小部件动态投射到Player并通过安全性检查您是否确实有Player即可:

QWidget *widget = this->ui->gridLayout->itemAtPosition(row, col)->widget();
Player * player = dynamic_cast<Player *>(widget);

if (player != NULL) {
   ...
}