首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QDialog错误定位

QDialog错误定位
EN

Stack Overflow用户
提问于 2015-05-18 17:07:35
回答 1查看 1.1K关注 0票数 1

我们有一个用作主窗口的对话框。它是从QDialog派生的。它有一个固定的大小,它是一个全屏窗口。

代码语言:javascript
运行
复制
// The form is a member variable.
form = new MyMainWindow( nullptr, Qt::Window | Qt::FramelessWindowHint );

在我们得到这个之后,用户可以访问一些工具菜单,它将弹出另一个对话框。我将form作为这个新对话框的父级进行传递。

代码语言:javascript
运行
复制
MyDialog dialog( /*Other parameters*/ this ); // Called from MyMainWindow.
dialog.setWindowIcon( QIcon( "MyIcon" ) );
dialog.resize( 1300, 1100 );
dialog.exec();

MyDialog类的构造函数中,我将父部件传递给基类。

代码语言:javascript
运行
复制
MyDialog::MyDialog( /**/ QWidget* aParent )
: QDialog( aParent, 0 )
{
}

但是,有时对话框不在主窗口的中心。可能的问题是什么?

我们使用的是Windows 7、Visual Studio 2012、Qt 5.4.0。

EN

回答 1

Stack Overflow用户

发布于 2015-05-19 04:51:59

假设'left','right','width','height‘都属于你的对话框。这将同时定位小部件并调整大小:

代码语言:javascript
运行
复制
dialog.setGeometry( top, left, width, height );

假设'this‘指向对话框,或者您可以使用另一个指向该对话框的指针。只要你说你的主窗口是窗口小部件(你把它作为父窗口传递给对话框),如果你想把对话框定位在父窗口中,它就会占据整个屏幕:

代码语言:javascript
运行
复制
QRect r = qobject_cast<QWidget*>(this->parent())->geometry();
this->setGeometry(
   (r.width() - width) / 2, (r.height() - height) / 2
   width, height);

附注:我输入了这个,并没有试图编译,但我也有类似的作品。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30299085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档