Получить дочерний элемент QSlider из QGridLayout - PullRequest
0 голосов
/ 20 мая 2018

Я хочу получить доступ к значению QSliders, которые есть в моем QGridLayout, но я не могу найти правильную команду.Пример того, что я пытаюсь:

 QSlider* slider=ui->gridLayout->takeAt(1)->widget();

Полученное сообщение об ошибке:

не может преобразовать 'QLayoutItem *' в 'QSlider *' при инициализации

Есть ли команда, чтобы сразу спросить QSlider, а не виджет?Можно ли разыграть?Я попробовал, но это тоже не сработало.Как я могу решить это?

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете использовать QGridLayout::findChild<T> метод:

QSlider *slider = ui->gridLayout->findChild<QSlider *>("widget_name"); // Name is optional

Или альтернативно

QList<QSlider*> sliders = ui->gridLayout->findChildren<QSlider *>();

Как указано GM, QLayout::takeAt используется для безопасного удаления и возврата виджета из QLayout, а не того, что вы пытаетесь сделать.

...