我们有一个用作主窗口的对话框。它是从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。
发布于 2015-05-19 04:51:59
假设'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);附注:我输入了这个,并没有试图编译,但我也有类似的作品。
https://stackoverflow.com/questions/30299085
复制相似问题