Qt通過控制代碼操作外部視窗
阿新 • • 發佈:2019-02-09
之前很長時間內用的都是MFC,後來VC的多執行緒與記憶體洩露讓我焦頭爛額,牽扯東西太多,於是乎,轉戰qt了。
程式設計過程中,不可避免要操作外部視窗,MFC中操作視窗用的都是CWND::fromHandle();
qt中操作外部視窗與CWND對應的是QWindow類。
HWNDhwndLogin=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。
關於這個知識點 就這樣啦。。。
積極主動的人有更多的機會 :)