Qt模态对话框问题(基于静态方法getOpenFileName)

在Win10环境下,使用Qt5.9.3和VS2015开发时,发现通过QFileDialog的getOpenFileName创建的模态对话框无法在关闭后继续保持居中。首次显示居中,但移动后下次打开位置会记住。尝试了修改源码、设置geometry和move方法,虽然能居中,但导致对话框变为非模态且样式改变。寻求解决方案。
摘要由CSDN通过智能技术生成

背景

系统环境:win10
Qt版本:5.9.3
IDE:vs2015(update3)
需求:在主窗体上创建模态对话框,且显示居中

过程

QFileDialog.h中找到了静态方法getOpenFileName
在这里插入图片描述
于是直接调用,结果出来的模态框位置位于主窗体的左上角,去查询帮助文档发现第一个参数parent如果传入主窗体的QWidget指针就可以使模态框位于主窗体居中位置(看起来是不是好简单)。
在这里插入图片描述
结果是:exec()后第一次显示出的模态框位置居中,但是如果用鼠标移动模态框的位置,下次模态框会出现在上次关闭时的位置(即使程序关闭并重新启动)。

于是在网上寻找解决的办法:由于很多答案都是复制粘贴的,于是找了很久才找到两个看起来靠谱的答案

dialog.move(int x,int y);

dialog.setGeometry(int x,int y,int xW,int yW );

不过我们直接使用静态方法getOpenFileName没法获取dialog对象,为了保持代码的一致性,我把Qt5.9.3的源码下载下来,并通过源码中提供的内容修改成如下代码用于替换getOpenFileName&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值