1. 程式人生 > >Qt通過控制代碼操作外部視窗

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

之前很長時間內用的都是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。

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

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