qt設定視窗置頂 Qt主窗體顯示最前

2021-10-19 04:01:02 字數 988 閱讀 7111

然而今天在qt中,沒有類似函式供呼叫。

嘗試了activewindow,show,shownormal,showmaximized 等函式還是不行。

網上有方法設定窗體的windowflags,具體方法為:

pmainform->setwindowflags(pmainform->windowflags() | qt::windowstaysontophint);

pmainform->shownormal();

但是該**會導致該窗體霸道的總是在最前,無法切換到諸如瀏覽器等其他應用。即使再設定如下**:

pmainform->setwindowflags(pmainform->windowflags() & ~qt::windowstaysontophint);

pmainform->shownormal();

也不能取消「總在最前」這個狀態。

其實我就是想要其顯示在最前面而已,最後想到用windows訊息,模擬windows切換工作列,但無奈不清楚windows是如何傳送該訊息的。

經過網上搜查,如下**即可解決,將視窗顯示到最前的效果,且無其他***:

if (pmainform->isminimized())

pmainform->shownormal();

//設定視窗置頂

::setwindowpos(hwnd(pmainform->winid()), hwnd_topmost, 0, 0, 0, 0, swp_nomove | swp_nosize | swp_showwindow);

::setwindowpos(hwnd(pmainform->winid()), hwnd_notopmost, 0, 0, 0, 0, swp_nomove | swp_nosize | swp_showwindow);

pmainform->show();

pmainform->activatewindow();

如果只設定 hwnd_topmost ,就會又出現總是在最前的情況。

Qt視窗置頂啟用

系統環境 windows10 64位企業版 開發環境 vs2017 qt5.9.9 vsaddin2.7.2.2 問題 qt介面程式主介面置頂,並一直獲取焦點使qt主視窗一直處於啟用狀態。通過函式setwindowflags設定屬性 qt windowstaysontophint即可 setwind...

QT 設定窗體透明

1.設定主窗體透明 設定窗體的透明的屬性為 setattribute qt wa translucentbackground,true 但 同時 需要設定 curflags qt framelesswindowhint 否則窗體會顯示為黑色 2.設定窗體透明度 this setwindowopaci...

Qt 視窗設定背景

1.方法一 qpalette palette palette.setbrush qpalette background,qbrush qpixmap images background.png scaled this size this setpalette palette 2.方法二this se...