【发布时间】:2014-03-21 13:33:07
【问题描述】:
我遇到了 QDialog 的问题,它没有显示在父窗口的中心。 下面sn-p解释一下:
void MyWidget::showDialog() {
QObject* p = parent();
while (p!=0) {
qDebug() << p;
p = p->parent();
}
qDebug() << QApplication::activeWindow();
MyClassDerivedFromQDialog dlg( this );
if ( dlg.exec() != dlg.Accepted ) {
return;
}
... do something
}
qDebug 上的输出如下
QSplitter(0x2d89930, name = "splitter")
MyWidget(0x2d89670, name = "widget")
MainWindow(0x27ef20, name = "application")
MainWindow(0x27ef20, name = "application")
执行我的示例会在屏幕上的某处打开对话框。将 QApplication::activeWindow() 作为父级传递给对话框构造函数会导致一个以主窗口为中心的对话框。那么为什么会这样以及如何追踪问题呢?
【问题讨论】:
-
在什么系统上你有这个问题?