转载: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); }
最后效果: