转载:https://www.it1352.com/491860.html

转载:http://ask.sov5.cn/q/NcsCmVkgup

 前面文章中提到,因为项目需要,在MFC对话框中嵌入Qt的窗口,已经实现了,但在使用过程中发现一些问题,特别是QLineEdit无法正确处理键盘输入,方向键无法响应。

MFC对话框内嵌入QwinWidget不重新绘制或响应制表键/箭头键

然后通过查资料得知:

在qwinwidget::init方法中,必须将ws_tabstop添加到窗口样式:

SetWindowLong(winId(), GWL_STYLE, WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_TABSTOP);

MFC对话框内嵌入QwinWidget不重新绘制或响应制表键/箭头键

 

 

此外,QwinWidget::WinEvent方法需要响应wm_GetDlgcode,以便让Windows知道它对接收键/选项卡输入感兴趣。必须添加这个if块:

if(msg->message == WM_GETDLGCODE)
{
   *result = DLGC_WANTARROWS | DLGC_WANTTAB;
   return(true);
}

MFC对话框内嵌入QwinWidget不重新绘制或响应制表键/箭头键

 

 最后效果:

MFC对话框内嵌入QwinWidget不重新绘制或响应制表键/箭头键

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2021-12-26
  • 2022-12-23
相关资源
相似解决方案