轉載:https://www.it1352.com/491860.html
轉載:http://ask.sov5.cn/q/NcsCmVkgup
前面文章中提到,因爲項目需要,在MFC對話框中嵌入Qt的窗口,已經實現了,但在使用過程中發現一些問題,特別是QLineEdit無法正確處理鍵盤輸入,方向鍵無法響應。
然後通過查資料得知:
在qwinwidget::init方法中,必須將ws_tabstop添加到窗口樣式:
SetWindowLong(winId(), GWL_STYLE, WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_TABSTOP);
此外,QwinWidget::WinEvent方法需要響應wm_GetDlgcode,以便讓Windows知道它對接收鍵/選項卡輸入感興趣。必須添加這個if塊:
if(msg->message == WM_GETDLGCODE) { *result = DLGC_WANTARROWS | DLGC_WANTTAB; return(true); }
最後效果: