赞助

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);
}

 

 最后效果:

posted @ 2021-01-20 22:42  车臣  阅读(484)  评论(0编辑  收藏  举报