Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt中模拟具有完整功能的鼠标事件_C++_Qt_Mouseevent_Keyevent - Fatal编程技术网

C++ 如何在Qt中模拟具有完整功能的鼠标事件

C++ 如何在Qt中模拟具有完整功能的鼠标事件,c++,qt,mouseevent,keyevent,C++,Qt,Mouseevent,Keyevent,我正试图通过主机上的UDP消息远程控制Qt应用程序 目前,远程控制计算机运行一个Qt应用程序,该应用程序接收消息并创建鼠标事件。每当出现新的鼠标事件时,主机都会发送类型、按钮、修改器和位置(介于0和1之间)。我试图在远程控制的计算机中创建具有这些值的事件,并模仿它们,就像它们是由用户创建的一样 void主窗口::slotNewMouseEvent(MouseMsg msg) { auto point=scalePoint(msg.x,msg.y);//坐标的基本转换 开关(消息类型) { 案例Q

我正试图通过主机上的UDP消息远程控制Qt应用程序

目前,远程控制计算机运行一个Qt应用程序,该应用程序接收消息并创建鼠标事件。每当出现新的鼠标事件时,主机都会发送类型、按钮、修改器和位置(介于0和1之间)。我试图在远程控制的计算机中创建具有这些值的事件,并模仿它们,就像它们是由用户创建的一样

void主窗口::slotNewMouseEvent(MouseMsg msg)
{
auto point=scalePoint(msg.x,msg.y);//坐标的基本转换
开关(消息类型)
{
案例QEvent::鼠标按钮按下:
QTest::mousePress(this->childAt(point),(Qt::MouseButton)msg.button,
(Qt::键盘修饰符)消息修饰符);
打破
案例QEvent::鼠标按钮释放:
QTest::mouseerelease(这个->childAt(点),(Qt::MouseButton)msg.button,
(Qt::键盘修饰符)消息修饰符);
打破
案例QEvent::MouseButtonDblClick:
QTest::mouseDClick(this->childAt(point),(Qt::MouseButton)msg.button,
(Qt::键盘修饰符)消息修饰符);
打破
案例QEvent::MouseMove:
QTest::mouseMove(this->childAt(point),point);
打破
违约:
打破
}
}
void主窗口::slotNewMouseEvent(MouseMsg msg)
{
auto point=scalePoint(msg.x,msg.y);//坐标的基本转换
QMouseEvent*evt=新的QMouseEvent((QEvent::Type)msg.Type,
指向
(Qt::MouseButton)msg.button,
(Qt::MouseButtons)msg.buttons,
(Qt::键盘修饰符)消息修饰符);
qApp->postEvent(本次->儿童(点),evt);
//我希望像这样的函数能自动完成
如果(evt->type()==QEvent::MousebuttonDBL单击| | evt->type()==QEvent::MouseButtonPress)
{
this->childAt(point)->setFocus();
}
qApp->processEvents();
}
这两个函数给出的结果几乎相同,这是不需要的。我希望将新创建的事件发送到屏幕顶部的小部件会起作用。但是,一些功能,如设置焦点在单击的元素上、通过右键单击打开上下文菜单或选择组合框的元素(元素窗口不是小部件)不起作用

有没有办法将这些事件保存在远程控制计算机的Qt应用程序中?我不希望使用像“windows.h”这样的系统库来防止对系统的危害,并使我的应用程序跨平台运行。我必须使用它们吗