国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Qt中的置頂窗口

2019-11-09 17:24:09
字體:
來源:轉載
供稿:網友

qt中置頂窗口一般都知道用這個函數:

this->setWindowFlags(Qt::FramelessWindowHint);

但是這樣會有一個問題:

當我在程序啟動顯示窗口的時候,不停的點擊其他窗口,使當前運行的程序窗口獲取不到焦點,那么程序窗口即使設置了FramelessWindowHint flag,

主窗口也并沒有置頂。代碼如下:

main.cpp

#include "mainwindow.h"#include <Qapplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    w.show();    return a.exec();}
#include "mainwindow.h"#include <QApplication>#include <QDesktopWidget>#include <QThread>MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent){    this->setFixedSize(QSize(QApplication::desktop()->width(), QApplication::desktop()->height()));    // 一般情況下會自定義關閉按鈕    this->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);    this->setAutoFillBackground(true);    // 假設有其他資源需要初始化,如果構造時間較短,不容易看到效果。    QThread::sleep(1);}MainWindow::~MainWindow(){}

程序開始運行后不停點擊其他窗口(如QtCreator),就會發(fā)現窗口程序出現在任務欄,但是窗口并沒有置頂。

具體原因還有待進一步研究。

嘗試多種解決辦法:

1.點擊一個按鈕后show出一個子置頂窗口。 (無效)

2.點擊一個按鈕后show出一個新的窗口(subwindow屬性,父窗口為空,用智能指針管理內存)。(有效,但是新show出來的窗口不能響應事件,被最開始的窗口覆蓋掉了);

...

后來想到直接用windows的置頂窗口的函數,但是還是會出現剛開始的那個問題。

然后嘗試其他各種怪招。。。

最后無意之間將show();這句代碼寫到置頂窗口的構造函數就行了!

最終代碼如下:

main.cpp

#include "mainwindow.h"#include <QApplication>#include <windows.h>int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    //[!] 新增代碼, 需要在.PRo文件加上 LIBS += -lUser32    ::SetWindowPos((HWND)w.winId(), HWND_TOPMOST, 0, 0, w.width(), w.height(), SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);    return a.exec();}mainwindow.cpp
#include "mainwindow.h"#include <QApplication>#include <QDesktopWidget>#include <QThread>MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent){    this->setFixedSize(QSize(QApplication::desktop()->width(), QApplication::desktop()->height()));    // 一般情況下會自定義關閉按鈕    this->setWindowFlags(Qt::FramelessWindowHint/*|Qt::WindowStaysOnTopHint*/);// [!]需要注釋qt的置頂屬性    this->setAutoFillBackground(true);    // 假設有其他資源需要初始化,如果構造時間較短,不容易看到效果。    QThread::sleep(1);    //[!]新增代碼    show();}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇阳县| 南木林县| 四子王旗| 墨竹工卡县| 石柱| 喀什市| 肥西县| 保康县| 弥勒县| 瓮安县| 涿鹿县| 峨边| 仙居县| 开江县| 乐业县| 十堰市| 阳东县| 鲁山县| 肇东市| 济南市| 泉州市| 平山县| 两当县| 遂川县| 唐海县| 海南省| 中卫市| 开封市| 麟游县| 金秀| 台安县| 商河县| 准格尔旗| 遂平县| 渝北区| 宜昌市| 丹巴县| 辛集市| 蕲春县| 蕲春县| 廉江市|