qt置顶界面

144 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

介绍

对界面的操作是常有之事,有时会对界面进行操作最小化置顶等等,SetWindowPos 函数就是最常用,并且设计范围比较广的函数。它不仅能改变窗口的大小位置,还能设置子窗口,弹出窗口或者顶层窗口的排列顺序。返回 0 表示失败,非零为成功,错误信息可以用GetLastError函数查看。**

最基础的两种使用方式:

不置顶

::*SetWindowPos*((*HWND*)this->winId(), *HWND_NOTOPMOST*, 0, 0, 0, 0, *SWP_NOMOVE* | *SWP_NOSIZE*);

置顶

::*SetWindowPos*((*HWND*)this->winId(), *HWND_TOPMOST*, 0, 0, 0, 0, *SWP_NOMOVE* | *SWP_NOSIZE*);

 

函数原型以及对每个参数的解释:

BOOL SetWindowPos(

 

HWND hWnd, //窗口句柄

 

HWND hWndInsertAfter, //排列顺序的句柄

 

int X, //水平坐标

 

int Y, //垂直坐标

 

int cx, //宽

 

int cy, //高

 

UINT uFlags //窗口定位标识);

 

hWnd 它用于定位窗口的句柄

hWndInsertAfter 他是用于表示上一个窗口的句柄,但是这个参数有固定值(置顶与不置顶因为是主要通过这个参数来改变的)也可以以Z次序排序的窗口中位于当前窗口前面的那个窗口(下面的几个选项是以Z次序排序的部分)。

 

HWND_BOTTOM:设置窗口为底层窗口

HWND_TOP:设置窗口为顶层窗口 就像常用的置顶按钮

HWND_NOTOPMOST:将窗口设置为最顶层窗口的下一层

HWND_TOPMOST:将窗口设置为最顶层窗口,就算不适用他他还是在最顶层的位置。

 

X y cx cy 他的作用就是确定位置以及大小,和控件中的setGeometry函数具有同样的作用。

 

uFlags 这个参数主要设计位置 他可以设置某个参数不起作用

参数介绍:

SWP_HIDEWINDOW:隐藏窗口

SWP_NOACTIVATE:不激活窗口

SWP_SHOWWINDOW:显示窗口

SWP_NOMOVE:这个参数代表原来的窗口位置不改变,x和y这两个参数不起作用。

SWP_NOSIZE:这个参数代表原来的窗口宽度和高度不改变, cx和cy这两个参数不起作用。

如果原位置以及大小不需要改变时,可以将这两个参数同时存在。