我在弄清楚如何迭代添加到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获取正确的指针?谢谢!
答案 0 :(得分:0)
马克·斯特罗贝尔(MarcStröbel)是对的: 以下代码提供了正确的指针。我不知道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)