天天看點

Qt通過句柄操作外部視窗

之前很長時間内用的都是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函數,原生态的,既快捷又安全。

可以将視窗提到最上面。

用QWidget會報錯,提示對應句柄的QWidget為空,但是用QWindow是可以的。

使用的是Qt 5.2版本,編譯器是minGw。

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

積極主動的人有更多的機會  :)

繼續閱讀