MFC對話框內嵌入QwinWidget不重新繪製或響應制表鍵/箭頭鍵

轉載: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);
}

 

 最後效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章