然而今天在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...