Qt设置窗口置顶(避免窗口隐藏)
本文最后更新于 97 天前,其中的信息可能已经有所发展或是发生改变。

方法一

说在前面:本方法比较通用,但经过我的使用,发现其存在问题,而下面方法二正常使用

存在问题:在窗口置顶后,会自动隐藏,即便在设置窗口置顶后手动对窗口使用show()setVisible(true)等方法显示出来,也会出现窗口闪烁的现象,极不自然。

对你的主窗口QMainWindow或者主控件QWidget使用以下方法,都是Qt自带的。

窗口置顶也是一个标志,先获取窗口已有的所有标志,再添加/移除置顶标志:

Qt::WindowFlags flags = windowFlags();
setWindowFlags(flags | Qt::WindowStaysOnTopHint); // 添加置顶
Qt::WindowFlags flags = windowFlags();
setWindowFlags(flags & ~Qt::WindowStaysOnTopHint); // 移除置顶

可以一步到位:

setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); // 添加置顶
setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint); // 移除置顶

但是这个方法会自动调用隐藏hide(),只能手动使用show()setVisible(true)等方法显示出来


方法二

同样,对你的主窗口QMainWindow或者主控件QWidget使用以下方法,也都是Qt自带的。

windowHandle()中获取并设置窗口标志,避免自动调用hide()导致窗口隐藏的问题。

setWindowFlags()windowHandle()->setFlags()代替,

windowFlags()windowHandle()->flags()代替。

添加置顶:

windowHandle()->setFlags(windowHandle()->flags() | Qt::WindowStaysOnTopHint); // 添加置顶

移除置顶:

windowHandle()->setFlags(windowHandle()->flags() & ~Qt::WindowStaysOnTopHint); // 移除置顶
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇