Qt中的触屏事件

QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理 QT:增加手指触摸touch事件touchevent,记录前后坐标并处理 阅读详情
AI摘要

本文详细介绍了在Qt中处理触屏事件的方法,包括如何启用触屏事件、事件类型与处理、事件传递和传播规则、触摸点分组以及鼠标事件与触屏事件的合成。还强调了处理多部件触屏事件时需要注意的事项。

Qt中的触屏事件

1.启用触屏事件

当按下、松开或移动触摸设备(如触摸屏或触控板)上的一个或多个触摸点时,就会发生触摸事件。要接收触摸事件,部件必须设置 Qt::WA_AcceptTouchEvents 属性,图形项必须将 acceptTouchEvents 属性设置为 true。
使用基于 QAbstractScrollArea 的 widget 时,应在滚动区域的视口中启用 Qt::WA_AcceptTouchEvents 属性。
与 QMouseEvent 类似,Qt 会在 widget 首次按下时自动抓取每个触摸点,并且该 widget 将接收触摸点的所有更新,直到触摸点被释放。请注意,一个 widget 有可能接收多个触摸点的事件,而且多个 widget 可能同时接收触摸事件。

在需要捕捉触屏的控件中增加
setAttribute(Qt::WA_AcceptTouchEvents);

如果是图形项
acceptTouchEvents(true);

2.事件处理

所有触摸事件都属于 QEvent::TouchBegin, QEvent::TouchUpdate, QEvent::TouchEnd 或 QEvent::TouchCancel 类型。为部件重新实现 QWidget::event() 或 QAbstractScrollArea::viewportEvent() 以及为图形视图中的项目重新实现 QGraphicsItem::sceneEvent() 以接收触摸事件。
与窗口部件不同,QWindow 可始终接收触摸事件,无需选择是否接收。在直接使用 QWindow 时,只需重新实现 QWindow::touchEvent()即可。
QEvent::TouchUpdate 和 QEvent::TouchEnd 事件会发送到接受 QEvent::TouchBegin 事件的部件或项目。如果 QEvent::TouchBegin 事件未被接受,也未被事件过滤器过滤,那么在下一次 QEvent::TouchBegin 之前,不会再发送触摸事件。
某些系统可能会发送 QEvent::TouchCancel 类型的事件。收到该事件后,应用程序将被要求忽略整个活动触摸序列。例如,在合成系统中,合成器可能会决定将某些手势视为全系统手势。每当做出这样的决定(手势被识别)时,客户端就会收到 QEvent::TouchCancel 事件的通知,从而可以相应地更新自己的状态。

触屏事件类型:QEvent::TouchBegin, QEvent::TouchUpdate, QEvent::TouchEnd 或 QEvent::TouchCancel 类型。
要处理触屏事件,就要重写QWidget::event() 
如果要控件可以处理触屏事件,就要重写控件,然后重写控件中的QWidget::event() 函数。
如果是QAbstractScrollArea的滑块类型要重写QAbstractScrollArea::viewportEvent() 这个函数。
QWindow 可始终接收触摸事件,无需选择是否接收。在直接使用 QWindow 时,只需重新实现 QWindow::touchEvent()即可
    virtual bool event(QEvent *e) override
    {
        switch (e->type())
        {
        case QEvent::TouchBegin:
            setTouchStyle();
            break;
        case QEvent::TouchUpdate:
            setHoverStyle();
            break;
        case QEvent::TouchEnd:
            setNormalStyle();
            break;
        default:
            break;
        }
        return QPushButton::event(e);
    }

touchPoints() 函数返回事件中包含的所有触摸点的列表。请注意,该列表可能是空的,例如在 QEvent::TouchCancel 事件中。可以使用 QTouchEvent::TouchPoint 类检索每个触摸点的信息。Qt::TouchPointState 枚举描述了触摸点可能具有的不同状态。
注意:touchPoints() 的列表永远不会是部分的: 触控事件将始终包含一个触控点,该触控点是针对发送事件的窗口或部件的每个现有物理触点。例如,假设所有触摸都针对同一个窗口或部件,那么条件为 touchPoints().count()==2 的事件保证意味着触摸触摸屏或触摸板的手指数正好是两个。

说白了就是touchPoints()函数可以获取到触控点的信息。每个触控点的信息都不一样,有自己独立的信息。

3.事件传递和传播

默认情况下,QGuiApplication 会将 QTouchEvent 中的第一个触摸点转换为 QMouseEvent。这使得在通常不处理 QTouchEvent 的现有部件上启用触摸事件成为可能。有关这样做时需要特别考虑的信息,请参阅下文。
QEvent::TouchBegin 是发送给 widget 的第一个触摸事件。QEvent::TouchBegin 事件包含一个特殊的接受标志,表示接收者是否需要该事件。默认情况下,事件被接受。如果您的 widget 未处理触摸事件,则应调用 ignore()。QEvent::TouchBegin 事件会沿着父窗口部件链向上传播,直到某个窗口部件使用 accept() 接受了该事件,或者某个事件过滤器消耗了该事件。对于 QGraphicsItems,QEvent::TouchBegin 事件会传播到鼠标下的项目(类似于 QGraphicsItems 的鼠标事件传播)。

4.触摸点分组

如上所述,多个部件有可能同时接收 QTouchEvents。但是,Qt 确保不会向同一个窗口部件发送重复的 QEvent::TouchBegin 事件,例如,如果用户触摸了 QGroupBox 中的两个不同窗口部件,而这两个窗口部件都忽略了 QEvent::TouchBegin 事件,那么在传播过程中理论上就会发生这种情况。
为了避免这种情况,Qt 将使用以下规则把新的触摸点分组:
当检测到第一个触摸点时,目的地部件首先由屏幕上的位置决定,其次由传播规则决定。
当检测到其他触摸点时,Qt 会首先查看新触摸点下的 widget 的任何祖先或后代是否有活动触摸点。如果有,新的触摸点将与第一个触摸点分组,新的触摸点将以单个 QTouchEvent 发送给处理第一个触摸点的 widget。(新触摸点下的部件不会收到事件)。
这样,同级部件就可以独立处理触摸事件,同时确保 QTouchEvents 的顺序始终正确。

5.鼠标事件和触摸事件合成

QTouchEvent 的传递独立于 QMouseEvent。应用程序标志 Qt::AA_SynthesizeTouchForUnhandledMouseEvents 和 Qt::AA_SynthesizeMouseForUnhandledTouchEvents 可用来启用或禁用触摸事件到鼠标事件和鼠标事件到触摸事件的自动合成。

6.注意事项

如上所述,启用触摸事件意味着多个部件可以同时接收触摸事件。结合默认的 QWidget::event() QTouchEvents 处理功能,这将为您设计触摸用户界面提供极大的灵活性。请注意其中的影响。例如,用户有可能用一只手指移动 QSlider,另一只手指按下 QPushButton。这些部件发出的信号将交错出现。
不支持使用 QTouchEvent 事件处理程序中的 exec() 方法(如 QDialog::exec() 或 QMenu::exec())递归到事件循环。由于存在多个事件接收者,递归可能会导致问题,包括但不限于事件丢失和意外的无限递归。
QTouchEvents 不受鼠标抓取或活动弹出窗口部件的影响。当打开弹出窗口或抓取鼠标时有多个活动触摸点,QTouchEvents 的行为是未定义的。

qt5版本中,触碰事件转为鼠标事件,当一根手指长按,另外一根手指再按下其他地方,依次松开后来手指和第一跟手指,会导致触碰事件转鼠标事件中的鼠标释放事件没法对应,手指开始按下的地方会保持按下状态。这个的解决方法只能是自己处理触碰事件,不依赖qt的自动转化。

   bool event(QEvent *e) override
    {
        static int i=0;
        switch (e->type()) {
        case QEvent::TouchBegin:
        {
            auto a = static_cast<QTouchEvent*>(e);
            auto pos = a->touchPoints().first().pos();
            auto child = childAt(pos.toPoint());
            if(child){
            QPoint childPos = child->mapFrom(this, pos.toPoint());
            // 创建鼠标按下事件
            QMouseEvent pressEvent(
                        QEvent::MouseButtonPress,
                        childPos,
                        Qt::LeftButton,
                        Qt::LeftButton,
                        Qt::NoModifier
                        );

            QCoreApplication::sendEvent(child, &pressEvent);
            }
            return true;
            break;
        }
        case QEvent::TouchUpdate:{
         //这里需要处理手指按下,滑动超出原先控件范围,还有多点触碰逻辑   
        }
        case QEvent::TouchEnd:
        //case QEvent::TouchCancel:
        {
            auto a = static_cast<QTouchEvent*>(e);
            qDebug()<<"窗口触碰事件"<<i++<<e->type()<<a->touchPoints().size();
            auto pos = a->touchPoints().first().pos();
            auto child = childAt(pos.toPoint());
            if(child){
            QPoint childPos = child->mapFrom(this, pos.toPoint());

            // 创建鼠标释放事件
            QMouseEvent releaseEvent(
                        QEvent::MouseButtonRelease,
                        childPos,
                        Qt::LeftButton,
                        Qt::LeftButton,
                        Qt::NoModifier
                        );

            // 发送事件给子部件
            QCoreApplication::sendEvent(child, &releaseEvent);
            }
            return true;
            break;
        }
        case QEvent::MouseButtonPress:
        case QEvent::MouseButtonRelease:
        case QEvent::MouseMove:{
            qDebug()<<"窗口鼠标事件"<<i++<<e->type();
            break;
        }
        case QEvent::Gesture:
        {

            auto gEvent = static_cast<QGestureEvent*>(e);
            qDebug()<<"窗口手势事件"<<gEvent->gestures();
            break;
        }
        }

        return QWidget::event(e);
    }

触屏的事件流转:

从子窗口到父窗口,一层一层的冒泡,只有开启了setAttribute(Qt::WA_AcceptTouchEvents);才会有touch事件,否则就是没有。touch的事件是一系列的事件,如果begin的事件不在event中接受,那么后面的QEvent::TouchUpdate, QEvent::TouchEnd 或 QEvent::TouchCancel 类型的事件就不会再次分发到这里,如果最后触屏事件都没有被接受,qt默认会处理,后面的都是触屏事件的更新都是由qt处理了,比如转化为鼠标事件等。如果想子窗口和父窗口同时收到触屏事件,这个是没有的,只能是子窗口接受之后,再把这个事件转发给父窗口。

是
否
是
否
是
否
触屏事件发生
目标窗口是否开启
Qt::WA_AcceptTouchEvents?
触发QEvent::TouchBegin
Qt默认处理
如转为鼠标事件
窗口是否接受
TouchBegin事件?
继续接收
TouchUpdate/TouchEnd/TouchCancel
子窗口处理事件
需要父窗口处理?
手动转发事件至父窗口
流程结束
父窗口处理事件
Qt QTouchEvent 多点触控 首先设置接收触控事件 setAttribute(Qt::WA_AcceptTouchEvents, true); bool CollectionPoint::event(QEvent *event) { switch (event->type()) { case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: { m_pos.clear(); QTouchEvent *touchE... 阅读详情

相关推荐

Qt触屏事件深度解析:从QTouchEvent到多点触控绘图板实战

在跨平台GUI开发中,事件处理机制是连接用户交互与应用逻辑的核心桥梁。Qt框架通过统一的事件模型,将底层输入抽象为可编程对象,其中触屏事件处理涉及多点触控、坐标转换和手势识别等关键技术原理。掌握这些原理对于开发工业HMI、教育白板等触摸交互应用具有重要价值,能显著提升用户体验和操作精度。本文聚焦Qt的QTouchEvent类,通过解析触摸点状态跟踪、事件传递链优化等热词,结合多点触控绘图板实战案例,系统讲解如何避免鼠标事件冲突、实现高性能轨迹绘制等工程实践要点,为开发健壮的跨平台触屏应用提供完整解决方案。

weixin_28730353的博客 233

qt编写触摸事件的关键

提要 无论你的电脑是支持触摸屏,还是你通过usb外部连接触摸屏,都能验证你的触摸程序功能。下面说说程序中使用触摸按钮等。 示例 按钮可以实现触摸功能; 自动义控件可以实现触摸按下拖动; 触摸长按出现对话框(也可以是其它控件)。 按钮可以实现触摸功能 只需要在该按钮所在的对话框的构造函数中添加下面一句: setAttribute(Qt::WA_AcceptTouchEvents);//支持多点触控 使用的是控件自身的事件,比如按钮的clicked槽函数,添加上面的支持触控后,触摸点击按钮后就会执行槽函数

肩上风骋的博客 7182

Qt触屏事件处理:从原理到多点触控绘图板实战

在跨平台GUI开发中,事件处理机制是连接用户输入与应用响应的核心桥梁。Qt框架通过事件循环和传递链,将底层硬件信号封装为统一的事件对象,为开发者提供了处理各类输入的标准范式。这一机制的技术价值在于实现了交互逻辑与界面呈现的解耦,使得应用能够适配鼠标、键盘、触控等多种输入方式。尤其在移动设备和触摸屏一体机普及的今天,流畅的触屏交互已成为专业软件的必备能力。本文聚焦于Qt触屏事件处理,深入解析QTouchEvent与QTouchPoint数据结构,并通过构建一个支持多点触控的绘图板示例,详解如何实现触屏事件的高

weixin_28725949的博客 319

QT电容触摸屏使用

2:触摸事件转换为鼠标事件,不用QT自动转换,用自己写的转换,QT的转换有点问题。4:Qt 单指划过默认当成鼠标事件,单指触摸默认转换鼠标事件。1:触摸事件和鼠标事件不是一个事件。3:触摸分为长按与短按。

u012230798的博客 4025

Qt触屏事件开发实战:从多点触控到手势识别

在跨平台GUI开发中,事件处理机制是构建交互应用的核心基础。Qt框架通过独立的事件循环和分发系统,将用户输入转换为可编程的信号。触屏事件作为现代移动和触摸设备的关键交互方式,其原理在于将屏幕接触抽象为包含唯一ID、坐标、状态和压力等信息的触摸点序列,并通过QTouchEvent类进行封装。掌握触屏事件处理的技术价值在于能够实现更自然、高效的多点触控交互,提升应用在移动端和工业触控场景下的用户体验。在应用场景上,从基础的绘图软件到复杂的图片浏览器和工业控制界面,都需要精准的触摸点跟踪和手势识别。本文以Qt框架

weixin_42651748的博客 241

Qt中QWebEngineView的触摸屏联动

对于具有触摸屏的应用程序,我们可以实现触摸屏联动,以便在QWebEngineView上进行交互操作。您可以根据需要自定义处理逻辑,例如获取触摸点的位置、大小等信息,并在QWebEngineView上执行相应的操作。中,我们检查事件的类型是否为触摸事件(TouchBegin、TouchUpdate、TouchEnd),如果是,则将事件转换为QTouchEvent,并调用。首先,我们需要创建一个Qt Widgets应用程序,并在项目文件中添加对WebEngine模块的依赖。来启用触摸事件捕捉。

EknOcaml的博客 459

Qt触屏放缩事件

Qt针对触屏发出的消息名称是QEvent::Gesture,启用该事件的方法为: 1、重写 event事件:bool event(QEvent*) { if (event->type() == QEvent::Gesture) { return gestureEvent(static_cast<QGestureEvent*>(event)); } re

Cong的专栏 2546

Qt鼠标触屏绘制平滑曲线:事件统一、贝塞尔平滑与SVG/PNG导出

在电子签名、白板批注与自由绘图等交互场景中,笔迹的流畅度与清晰度直接影响用户对产品的第一印象。Qt作为跨平台GUI框架,提供了强大的QPainter绘制体系,但鼠标与触屏事件源不统一、原始采样点抖动、快速滑动产生折角等问题,常导致手写效果生硬。本文从事件状态机归一出发,介绍如何统一处理鼠标与触屏输入,并基于Catmull-Rom转贝塞尔曲线实现增量式平滑绘制,兼顾实时性与性能。同时对比矢量SVG与非矢量PNG两种导出路径,剖析高分屏适配与Qt6坐标API迁移的常见陷阱。无论是开发电子签名、批注工具还是绘图插

weixin_42509888的博客 7

QT + OSG实现触屏旋转和双指缩放

1、为了能够触发触屏事件,需要将窗口属性设为Qt::WA_AcceptTouchEvents setAttribute(Qt::WA_AcceptTouchEvents); 2、重新实现event bool OsgContainer::event(QEvent *event) { QEvent::Type type = event->type(); if(typ...

Sparrow_du的博客 3015

Qt鼠标触屏绘制平滑曲线:从事件采集到贝塞尔拟合全解析

在图形界面开发中,手写、涂鸦或电子签名场景常面临线条锯齿、折线生硬的问题,根源在于采集到的离散采样点需要转化为视觉上连续的曲线。Qt框架提供了完整的绘图基础设施,通过QPainter、QPainterPath以及贝塞尔曲线算法,可有效解决这一核心矛盾。本文从事件采集与坐标处理入手,对比矢量方案(基于QPainterPath)与非矢量方案(基于QImage/QPixmap)的适用场景,深入讲解Catmull-Rom转三次贝塞尔的最小实现、采样距离过滤、脏矩形重绘等工程实践,并针对触屏事件接收、高DPI坐标错位

weixin_35750483的博客 3

qt触摸屏实例

qt是一个大型C++集成块 方便易用。此版本程序有QT4.81开发。

Qt For Android 获取单击触屏事件

*>

zhaoxz 1139

疫情数据分析的“核武器”!JHU CSSE COVID-19数据集超深度解析与实战指南(附代码)

在面对这场没有硝烟的战争时,除了医护人员在前线与病毒搏斗,还有一群默默的英雄——数据科学家和分析师,他们利用手中的“数据武器”,昼夜不停地监测、分析、预测疫情走势,为政府决策、资源调配、公众科普提供了至关重要的支撑。同时,由于某些国家(如美国、加拿大、澳大利亚、中国等)的数据细化到省/州级别,为了得到国家层面的总数据,我们需要按国家和日期进行聚合。正是在这样的背景下,经过这些步骤,我们已经得到了一个包含了累计数据、每日新增数据和活跃病例数的完整数据集,可以开始进行深入的分析和可视化了!

wylee的博客 1165

处理简单的触屏输入

配合上一篇文章,zForce的内核驱动将触屏对接到/dev/input/event0设备文件上。 1. 利用单点触控完成虚拟键盘效果 写了一个用户态的程序,在屏幕上划分9个区域,作为虚拟键盘。 需要读取点击事件,并以up时位置作为点击位置。 程序是只处理单点触控效果,多点触控需要根据 trace id,再进行划分。 #include #include #include #inclu

waterhawk的专栏 1064

MATLAB锂离子电池伪二维(P2D)模型实现

锂离子电池伪二维(P2D)模型的MATLAB实现。该模型基于Newman等人提出的经典电化学模型,考虑了固液相扩散、电荷守恒和电化学反应动力学。

hie98894的博客 1928

告别裸机:在FreeRTOS上为STM32移植SOEM 1.4.0的完整指南

本文详细介绍了在FreeRTOS环境下为STM32H7系列芯片移植SOEM 1.4.0的完整指南,涵盖环境准备、任务架构设计、OSAL层适配及网络驱动优化等关键步骤。通过EtherCAT主站解决方案的实现,帮助开发者构建稳定可靠的工业自动化系统,提升实时通信性能。

weixin_33582311的博客 363

Qt使用触屏对图片进行平移和缩放

1、对需要响应触屏的窗口 激活触屏事件 //使用触屏的窗口激活触屏事件 setAttribute(Qt::WA_AcceptTouchEvents,true); 2、重写event函数 //在 bool event( QEvent* e); 中过滤 bool XXXTouchWidget::event( QEvent* e ) /*override*/ { switch( e ->type( ) ) { case QEvent::TouchBegin: case QE

iMatt的专栏 2594

5nm制程的CV5芯片实测:用它给无人机做8K拍摄和实时避障,功耗和性能到底怎么样?

本文深度评测了5nm制程的CV5芯片在无人机8K拍摄和实时避障中的表现。通过实测数据展示了CV5的异构计算架构、8K视频编码性能和CVflow®AI引擎的加速效果,同时提供了开发中的优化技巧和散热建议,为无人机开发者提供了实用的参考。

weixin_30861797的博客 358

Qt触屏研究-碰到的一些问题

最近在搞qt触屏相关的这些由于之前没有经验所以也是碰到了很多问题,有的不一定和触屏相关,这篇主要是总结一下。 首先就是前面说的手势,回去之后自己用一台具有触屏的功能的笔记本测试了一下发现表现出来的效果跟前面一样。按照官方文档QPanGesture是一个手指滑动,QSwipeGesture也是一个手指,也就是两者触点只有一个,但是测试结果并不是这样。 一个比较简单的测试程序: b...

苍天愚弄我 5733

uniapp微信小程序 - 解决输入框input软键盘弹起时页面整体上移问题,页面上推导致顶部出现元素遮挡问题,uniapp软键盘导致页面上移头部内容被错位遮住错乱,让页面头固定在顶部不动不会受影响!

解决uni-app微信小程序底部input输入框,键盘弹起时页面整体上移问题,当键盘弹起时,会导致页面整体上移,页面头固定在顶部不动,微信小程序键盘弹起时,底部输入框抬起至键盘上方,顶部导航栏固定不动,uni-app输入框,输入框在底部;当弹出键盘时,页面整体上移,页面头信息会消失不见,小程序底部input输入框,input组件弹起系统键盘时,键盘会顶住页面导致页面会上移,当键盘弹起时整个页面被挤压,导致元素上移或被覆盖,输入框能自动抬起至键盘上方,顶部导航栏保持固定,不被顶上去,如何解决这个问题,动态高度

✅ 精选推荐文章 1万+

Python爬取谷歌学术全攻略:基于Playwright与Asyncio的高效、抗反爬虫实践

同时,文章将详细解析爬虫过程中可能遇到的各种挑战,如IP封锁、验证码、动态内容加载等,并提供切实可行的解决方案。self.logger.info(f"第 {current_page} 页解析完成,共找到 {len(page_results)} 条结果。:谷歌学术的HTML结构并非一成不变,其CSS类名和标签结构可能会发生变化,且不同地区、不同语言的界面可能存在差异,增加了数据解析的难度。self.logger.info(f"开始搜索关键词: '{keyword}',计划爬取 {max_pages} 页")

2201_76125261的博客 1550

qt android触屏放大缩小,Qt on Android: Qt Quick 事件处理之捏拉缩放与旋转

上一篇《Qt on Android: Qt Quick事件处理之鼠标、键盘、定时器》我们介绍了常见的鼠标、键盘、定时器的处理,鼠标、键盘都是电脑上我们最常使用的事件,这节我们来介绍 Android 智能手机上的一个非常重要的手势:捏拉手势。捏拉手势最早在苹果手机上得到应用,苹果还曾经尝试为此操作申请专利,借以钳制三星在美国的手机和平板销售。这些我们且不管它,咱们只说在 Qt Quick 中如何处理...

weixin_28972687的博客 767

【Bug已解决】Codex capacity errors 自动重试与意图保留 解决方案

原始报错:Codex Desktop: capacity errors should preserve intent and auto-retry instead of handing model routing back to the user场景:向模型服务发请求时遇到容量错误(服务端繁忙 / 限流 / 容量不足),客户端不做任何重试,直接把"请求失败,请选择另一个模型或重试"的锅甩给用户,让用户手动去点。用户本来只是想完成一次任务,却被中途打断去当"调度员"。

博客 278

qt 列表(qtableview/qtablewidget/qlistwidget)触摸屏滑动卡死问题

解决列表滑动卡死问题 项目运行环境:window10 系统的平板,使用到qt 列表(仿照android列表),但是qwidget对于触屏操作支持个人感觉不是太好。列表滑动时有加速和拖动效果,测试发现,快速滑动没有结束或者拖动没有恢复时,返回父界面,再次进入子界面会卡死。困扰很久,大量测试最后发现在析构函数增加滚动停止能解决问题,记录一下,同时也给遇到同样问题的小伙伴一种解决思路 QScroller...

zp33 4905

245. 项目195:简易文字冒险游戏——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!我们的目标是不仅教会您Python语言,更是培养您解决问题的思维方式。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。开发一个简易的文字冒险游戏,通过文本描述场景和事件,让玩家通过选择不同的选项来推动故事发展。

Python老吕的博客 711

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QT桌面(实现界面的滑动切换)

在ARM Linux中使用QT如何实现滑动翻页切换界面的效果呢?在ARM中是没有自带的鼠标的,那么我们如何实现滑动翻页呢?经过测试发现在ARM中运行QT程序也是可以通过重写鼠标事件来捕获触屏动作的,在ARM中滑动屏幕被定义成了鼠标左键事件,那么这样就有思路了,重写鼠标事件。学习完这篇文章大家就可以自己去实现翻页的效果啦,有没有感觉非常的炫酷呢。

m0_49476241的博客 4619

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: qt拖拽事件重写
下一篇: Linux中利用消息队列给两个程序切换显示到前台
Simple_core
博客等级 码龄6年 929粉丝 93原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值