![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
文章平均质量分 70
mjlong123123
10年的Android开发经验。
展开
-
在Qt程序中如何优雅地实现线程切换
程序开发过程中,我们避免不了使用线程来执行耗时的操作,最常见的场景是启动线程执行耗时操作同时显示loading画面,当耗时操作完成时关闭loading界面。这样简单的操作中也涉及到了线程切换的动作。首先显示loading画面代码需要执行在ui线程,然后耗时操作执行在子线程。显示loading画面-》切换子线程-》执行耗时操作-》切换ui线程-》关闭loading画面。Qt中有一个重要的概念是信号和槽,使用信号和槽我们可以实现消息数据的传递,当然这种传递也包括线程间的消息数据传递。槽指的是槽函数,槽函数运原创 2022-03-03 22:10:33 · 2041 阅读 · 1 评论 -
Qt中实现拖拽控件到窗口外-处理事件被截断问题
上一篇文章讲解了如何将一个控件拖拽到窗口外,并将窗口外的控件拖回到原来的窗口。在开始拖拽的时候,由于控件被移动到另一个窗口,所以导致后续的鼠标事件不能被接收。这篇文章将给出一个解决方法。需要通过全局的方式接收鼠标拖拽事件。 拖拽开始判断的逻辑继续在MouseArea中处理,当开始拖拽的时候通知全局事件接收器处理拖拽。 Qml中监听全局事件接收器的鼠标移动通知,根据移动位置控制控件显示位置。 Qml中监听全局事件接收器的鼠标结束通知,根据结束位置判断释放停靠在新的位置。创建全局事件接收器定义类原创 2021-12-05 19:23:56 · 690 阅读 · 1 评论 -
Qt中实现拖拽控件到窗口外释放
在窗口内拖拽控件的实现在上一篇文章中已经讲解过了,这篇文章讲解如何将控件拖拽到窗口外。控件是不能脱离窗口区域渲染的,所以我们需要为拖拽过程中的控件创建一个窗口。实现的主要思路如下:为拖拽过程中的控件创建window。 修改拖拽控件的宿主为新创建的window。 根据MouseArea接收到移动坐标修改window显示位置。 如果拖拽控件停留在主window中,那么修改拖拽控件的宿主为主window。创建窗口为了能将控件拖拽到主窗口外,这里需要为他创建新的窗口。Window {原创 2021-12-05 19:21:03 · 1271 阅读 · 0 评论 -
Qt中如何实现拖拽释放控件
这篇文章将要介绍Qml中如何实现拖拽功能。实现拖拽并释放控件需要下面几个步骤:为控件添加鼠标响应事件,监听鼠标移动的横纵坐标。 根据鼠标的位置移动控件位置。 修改控件的宿主。处理鼠标事件为了处理鼠标事件,我们可以在qml文件中添加一个MouseArea对象。这个对象有位置和大小,但是不可见。这里为了演示MouseArea的使用,我们先添加一个click事件监听。Rectangle{ width: 100 height: 100 color:原创 2021-12-05 19:19:46 · 2289 阅读 · 0 评论 -
QT qml中动态组件那些事
目录动态创建qml对象Qt.createComponentQt.createQmlObjectComponent qml type销毁动态创建的对象QQmlContext总结动态创建qml对象Qt.createComponentvar component = Qt.createComponent()⇒ component.createObject⇒QmlContext是createComponent方法被调用的qml对象的contextqml对象的文件定义:原创 2021-09-23 22:26:56 · 861 阅读 · 0 评论