1. 第一种采用Windows.h头文件函数,这个置顶有个问题就是会把活动窗口切换给置顶的窗口
SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); //置顶 SetWindowPos(HWND(this->winId()), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); //取消置顶 this是你要置顶的窗口
2. 第二种就是用QT自己的,QT的取消窗口会把窗口放到最底层,如果多层窗口也就是取消了就算你没切换窗口也看到不到窗口了,例如解决视频播放字幕显示,播放窗口非活动状态被别的窗口遮挡就得只取消置顶还得看到字幕,就不易用这种方法
this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::Tool); //置顶 不显示标题栏 不显示任务栏 this->setWindowFlags(this->windowFlags() & ~Qt::WindowStaysOnTopHint); //取消置顶 this是你要置顶的窗口
3. 第三种就是阻塞所有其他窗口,让窗口置顶,这个不建议使用
this->activateWindow();