qt 内嵌窗口和记录内嵌窗口位置原点问题

主要记录一下在用内嵌窗口时涉及到调用setWindowFlags和setWindowFlag API时不同效果

如果想给主窗口(例: MainWindow)创建一个内嵌窗口, 需要注意两处,例如在主窗口创建子窗口(DialogTest):

1. 在创建子窗口时构造中传入主窗口

DialogTest *test = new DialogTest(this);

2. 设置子窗口无边框

1
test->setWindowFlags(Qt::FramelessWindowHint);

 

完整创建子窗口代码如下:

//MainWindow下
    DialogTest *test = new DialogTest(this);
    test->setWindowFlags(Qt::FramelessWindowHint);
    test->show();
    test->setGeometry(0, 0, 400, 400);

此处注意是setWindowFlags不是setWindowFlag, 这两个API调用有区别,不知道是我使用方式不对还是其他问题....

setWindowFlags 窗口位置原点在: 主窗口左上角位置

setWindowFlag 窗口位置原点在: 桌面左上角位置

setWindowFlags和setWindowFlag主要区别是原点不同, 如果使用setWindowFlag, 比如设置窗口位置: x: 0  y: 0, 会是桌面左上角, 如果主窗口移动子窗口不会跟随移动:

 

 

 如果使用setWindowFlags设置窗口位置 x:0 y:0, 会在窗体左上角, 如果主窗口移动子窗口会跟随移动:

 

 

 

所以一般大家都是用的setWindowFlags。

 

 

setWindowFlag窗口位置原点在: 主窗口左上角位置
posted @   耿明岩  阅读(438)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2021-06-11 linux (debian 10) 解压deb包安装向日葵客户端,客户端安装失败问题记录
希望能帮助到你,顺利解决问题! ...G(^_−)☆
点击右上角即可分享
微信分享提示