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

Posted

技术标签:

【中文标题】C ++ QT如何从QMainWindow布局访问QWidget的公共类成员【英文标题】:C++ QT How to access a public class member of a QWidget from a QMainWindow Layout 【发布时间】: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]
    

...

【问题讨论】:

【参考方案1】:

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

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

if (player != NULL) 
   ...

【讨论】:

以上是关于C ++ QT如何从QMainWindow布局访问QWidget的公共类成员的主要内容,如果未能解决你的问题,请参考以下文章

如何从父级不是 QMainWindow 的 QWidget 访问 QMainWindow

如何访问 Qtitan 视图的滚动条?

在Qt中手动设置窗口布局的正确方法

QT中将QWidget提升为QMainWindow

Qt入门系列开发教程基础控件篇QMainWindow主窗口

13.QT-QMainWindow组件使用