Qt通過控制代碼操作外部視窗

2021-07-23 16:44:43 字數 837 閱讀 7582

1、

----

之前很長時間內用的都是mfc,後來vc的多執行緒與記憶體洩露讓我焦頭爛額,牽扯東西太多,於是乎,轉戰qt了。

程式設計過程中,不可避免要操作外部視窗,mfc中操作視窗用的都是cwnd::fromhandle();

qt中操作外部視窗與cwnd對應的是qwindow類。

hwnd

hwndlogin=findwindow(null,l"登入");

qwidget*widgetlogin=qwidget::find((wid)hwndlogin);

qwindow*windowlogin=qwindow::fromwinid((wid)hwndlogin);

windowlogin->showfullscreen();
用上面的語句即可將相應控制代碼對應的視窗最大化顯示。當然有不足的地方,比如呼叫title顯示不了視窗的標題的,呼叫show方法,有時候不能把視窗提到頂層,取決於視窗狀態,如果視窗是最小化的,show會將視窗提到最前面,否則沒有變化的。。。。我還一度以為方法不好使。。。還是有坑啊。

另外,如果單純想實現某些視窗的最大化、最小化、放在最前面,可以用api函式,原生態的,既快捷又安全。

::setforegroundwindow(hwndsilver);

可以將視窗提到最上面。

用qwidget會報錯,提示對應控制代碼的qwidget為空,但是用qwindow是可以的。

使用的是qt 5.2版本,編譯器是mingw。

關於這個知識點    就這樣啦。。。

頂 0 踩

Qt獲取當前視窗控制代碼 獲取視窗中控制項的控制代碼

大家可以看這篇文章,講的比較詳細。winid 函式。qt5裡面 如果想獲取qt視窗的控制代碼用於顯示 且看我操作 hwnd m hwnddisplay hwnd this winid 獲取當前this視窗的控制代碼 mycamera display m hwnddisplay 呼叫你camera的d...

C 視窗 控制項控制代碼操作

其實在wpf下操作也很簡單,不過稍微要麻煩點 引入命名空間 system.windows.interop 獲取窗體的 intptr hwnd new windowinterophelper this handle 獲取控制項的 intptr hwnd hwndsource presentations...

Qt 通過滑鼠移動視窗

用 qt 開發桌面端程式的時候,通常會去掉自帶的標題欄,然後自定義乙個標題欄,那麼就需要實現通過滑鼠來移動窗體。實現邏輯其實很簡單,只需要捕捉到滑鼠的座標點,在 mousemove 事件中實現窗體移動。void actionwidget mousepressevent qmouseevent eve...