【发布时间】:2018-12-21 16:25:09
【问题描述】:
我在弄清楚如何迭代我添加到 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 获得正确的指针?谢谢!
【问题讨论】:
-
什么是“正确的指针”?为什么你的结果不正确?
-
@vahancho,我想要 QWidget 的指针,而不是 QMdiSubWindow 的指针
-
您确定您的代码吗?这个
foreach (QWidget* widget, mdi->subWindowList())甚至不能为我编译。它应该是foreach(QMdiSubWindow* widget, mdi->subWindowList())。 -
看起来小部件被包裹在一个 QMdiSubWindow 中,你试过
foreach(QMdiSubWindow* sub, mdi->subWindowList()) { qDebug() << sub->widget(); } -
@vahancho 它在 Windows 7 上使用 Qt5.9.1 和 Visual c++ 为我编译