Как найти виджет(-ы), лежащие на QGridLayout

223
25 декабря 2017, 13:32

Вопрос в заголовке. Пытался сделать так

QGridLayout *layout;
...
QPushButton *btn = new QPushButton("click me");
QPlainTextEdit *textEdit = new QPlainTextEdit();
layout->addWidget(textEdit);
layout->addWidget(btn);
QPlainTextEdit *foundTextEdit = layout->findChild<QPlainTextEdit*>();
if (!foundTextEdit)
    qDebug() << "((("; //всегда срабатывает
qDebug() << layout->children().size(); //всегда выводит 0

но ничего не вышло.

Answer 1

Нашел на английской версии сайта как перебирать: https://stackoverflow.com/questions/4065378/qt-get-children-from-layout. Удалял с помощью QLayout::takeItem и delete. Пример:

QGridLayout *layout = new QGridLayout;
QPushButton *btn = new QPushButton("click me!");
QPlainTextEdit *textEdit = new QPlainTextEdit;
layout->addWidget(btn);
layout->addWidget(textEdit);
for (int i = 0; i < layout->count(); ++i)
{
    QWidget *widget = layout->itemAt(i)->widget();
    //qobject_cast<QPushButton*>(widget) или qobject_cast<QPlainTextEdit*>(widget)
}
while (QLayoutItem *itm = layout->takeItem(0))
{
    delete itm->widget();
    delete itm;
}
READ ALSO
Инициализация n-мерного массива нулями

Инициализация n-мерного массива нулями

Здравствуйте! Возможно, вопрос уже был, однако я усердно искал и не нашелКак инициализировать динамический n-мерный массив нулями при объявлении?...

267
Как заменить цвет текстуры?

Как заменить цвет текстуры?

Имеется текстура с текстомСам текст белый, фон прозрачный

224
Заполнение очереди из файла

Заполнение очереди из файла

Как заполнить стандартный контейнер очередь (queue) данными из файла с помощью стандартных алгоритмов?

278