zljhhg 2023-04-15 16:04 采纳率: 16.7%
浏览 42

QT的nativeEvent问题请教

bool Widget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
 MSG* msg = (MSG*)message;
DWORD dwPid = 0;
            GetWindowThreadProcessId((HWND)msg->wParam,&dwPid);
            COPYDATASTRUCT *cds = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
            QString text = QString("PID=[%1]的进程发来的消息为:%2").arg((int)dwPid).arg((char*)cds->lpData);
   return QWidget::nativeEvent(eventType, message, result);
}

      COPYDATASTRUCT data;    //使用COPYDATA的方式进行数据传递
                data.dwData = 0;
                data.cbData = param.length();
                data.lpData = ¶m[0];
                qDebug()<<data.lpData;
                ::SendMessage(m_wnd, WM_COPYDATA, (WPARAM)wid, (LPARAM)&data);
                

QT在win下可以通过SendMessage和PostMessage机制发送给nativeEvent接收,但SendMessage和PostMessage是win下的特有机制。
我发现在linux下也存在nativeEvent,
那在linux下,和win下SendMessage和PostMessage的功能一样的函数是什么

我知道QT机制QApplication::postEvent和QApplication::sendEvent 发送的只能由event(QEvent *event)接收。

无法由nativeEvent接收。

求nativeEvent,在linux下使用方法,

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-15 20:03
    关注
    • 这篇博客: QPostEvent的源码解读中的 最后全部事件通过QApplication::SendEvent()派发出去, 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event)
      {  if (event) event->spont = false; return self ? self->notifyInternal(receiver, event) : false; }
      
    评论

报告相同问题?

问题事件

  • 创建了问题 4月15日

悬赏问题

  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上