Как правильно перебрать виджеты в QMdiArea? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть проблема с выяснением, как перебирать виджеты, которые я добавил в QMdiArea.Когда я добавляю QWidget в QMdiArea, а затем перебираю следующий код, я получаю два разных указателя для своего виджета, где указатели при переборе неверны:

    QWidget* w1 = new QWidget();
    QWidget* w2 = new QWidget();
    qDebug() << w1;
    qDebug() << w2;
    QMdiArea* mdi = new QMdiArea();
    mdi->addSubWindow(w1);
    mdi->addSubWindow(w2);

    foreach(QWidget* widget, mdi->subWindowList()) {
        qDebug() << widget;
    }

Пример вывода:

QWidget(0x21f0610)
QWidget(0x21f0680)
QMdiSubWindow(0x21f07d0)
QMdiSubWindow(0x2195420)

Как я могу получить правильные указатели из MdiArea?Спасибо!

1 Ответ

0 голосов
/ 21 декабря 2018

Марк Штребель был прав: следующий код предоставил правильные указатели.Я не знал, что QMdiArea создает QMdiSubWindow и оборачивает мой виджет:

QWidget* w1 = new QWidget();
QWidget* w2 = new QWidget();
qDebug() << w1;
qDebug() << w2;
QMdiArea* mdi = new QMdiArea();
mdi->addSubWindow(w1);
mdi->addSubWindow(w2);

foreach(QMdiSubWindow* sub, mdi->subWindowList()) {
    qDebug() << sub;
    qDebug() << sub->widget();
}

Пример вывода:

QWidget(0x21c0610)
QWidget(0x21c0680)
QMdiSubWindow(0x21c07d0)
QWidget(0x21c0610)
QMdiSubWindow(0x2165420)
QWidget(0x21c0680)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...