C ++ QT Как получить доступ к общедоступному члену класса QWidget из макета QMainWindow - PullRequest
0 голосов
/ 19 января 2019

Как следует из заголовка, я хочу получить доступ к переменным-членам класса, который наследует QWidget от QGridLayout в QMainWindow.Я могу получить доступ к функциям-членам класса QWidget, но не могу связаться с членами моего класса "Player".

Я знаю, что "-> widget ()" возвращает только QWidget *.Есть ли другой способ вернуть реальный класс, который находится в этих координатах?

Этот вопрос показывает только доступ к функциям 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 голосов
/ 19 января 2019

Если я хорошо понимаю, вам просто нужно динамически преобразовать ваш виджет в Player и убедиться, что у вас действительно есть Player по безопасности:

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

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