我们有一个用作主窗口的对话框。它源自QDialog
。它有一个固定的大小,它是一个全屏窗口。
// The form is a member variable.
form = new MyMainWindow( nullptr, Qt::Window | Qt::FramelessWindowHint );
在我们得到这个之后,用户可以访问一些工具菜单,这将弹出另一个对话框。我将form
作为此新对话框的父级传递。
MyDialog dialog( /*Other parameters*/ this ); // Called from MyMainWindow.
dialog.setWindowIcon( QIcon( "MyIcon" ) );
dialog.resize( 1300, 1100 );
dialog.exec();
在MyDialog
类的构造函数中,我将父窗口小部件传递给基类。
MyDialog::MyDialog( /**/ QWidget* aParent )
: QDialog( aParent, 0 )
{
}
但有时对话框不在主窗口的中心。可能是什么问题?
我们使用Windows 7,Visual Studio 2012,Qt 5.4.0。
答案 0 :(得分:0)
假设'left','right','width','height'都属于你的对话框。这将定位窗口小部件并同时调整大小:
dialog.setGeometry( top, left, width, height );
假设'this'指向对话框,或者您可以使用指向该对话框的其他指针。只要您说主窗口是窗口小部件(您将其作为父窗口传递给对话框)就会占据整个屏幕,如果您想尝试将对话框放在父窗口中:
QRect r = qobject_cast<QWidget*>(this->parent())->geometry();
this->setGeometry(
(r.width() - width) / 2, (r.height() - height) / 2
width, height);
P.S。我输入并且没有尝试编译,但类似的工作对我来说。