代码之家  ›  专栏  ›  技术社区  ›  RoQuOTriX

如何在qmdiarea中迭代正确的小部件?

  •  0
  • RoQuOTriX  · 技术社区  · 7 年前

    我有一些问题,如何通过添加到qmdiarea中的小部件来迭代。当我向qmdiarea添加一个qwidget,然后使用以下代码迭代时,我会为我的widget获得两个不同的指针,其中迭代时的指针不正确:

        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 回复  |  直到 7 年前
        1
  •  0
  •   RoQuOTriX    7 年前

    马克·斯特贝尔是对的: 以下代码提供了正确的指针。我不知道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)