当前位置: 首页 > news >正文

临沂手机网站信息推广技术公司电话网站和网页的区别

临沂手机网站信息推广技术公司电话,网站和网页的区别,南京网站建站公司,学校网站建设是什么1. 实现功能 QML项目中,点击一个按键后,运行一段比较耗时的程序,此时ui线程会卡住。如何避免ui线程卡住。 2. 单线程(会卡住) 2.1 界面 2.2 现象 点击delay btn后,执行耗时函数(TestJs.func…

1. 实现功能

QML项目中,点击一个按键后,运行一段比较耗时的程序,此时ui线程会卡住。如何避免ui线程卡住。

2. 单线程(会卡住)

2.1 界面

在这里插入图片描述

2.2 现象

  • 点击delay btn后,执行耗时函数(TestJs.func_delay())界面阻塞(阻塞了12s),等待运行完成后,点击ui btn才能响应。
qml: 2024-11-14 09:48:29 ui thread
qml: 2024-11-14 09:48:30 click delay btn
qml: delay thread 2024-11-14 09:48:42
qml: 2024-11-14 09:48:42 ui thread

2.3 main.qml

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import "test.js" as TestJsWindow {width: 640height: 480visible: truetitle: qsTr("Thread")Row{spacing: 20Button{width: 200height: 100text: "ui btn"onClicked: {console.log(Qt.formatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss"), "ui thread")}}Button{width: 200height: 100text: "delay btn"onClicked: {console.log(Qt.formatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss"), "click delay btn")TestJs.func_delay()}}}
}

2.4 test.js


//耗时函数
function func_delay() {var cnt = 0;for(let i=0; i<1000000000; i++){cnt++;}console.log("delay thread", Qt.formatDateTime(new Date(),"yyyy-MM-dd HH:mm:ss"))
}

3. 多线程(WorkerScript方式)

3.1 界面

在这里插入图片描述

3.2 现象

  • 将耗时函数(func_delay())放到WorkerScript.onMessage中执行,这样ui线程不会阻塞。
  • ui线程与delay线程直接可以通讯,发送通过sendMessage,接收通过onMessage
qml: 2024-11-14 09:54:11 ui thread
qml: 2024-11-14 09:54:11 click delay btn-1
qml: 2024-11-14 09:54:11 click delay btn-2
qml: 2024-11-14 09:54:12 ui thread
qml: 2024-11-14 09:54:13 ui thread
js: delay thread 2024-11-14 09:54:23
js: ui thread -> delay thread:  Hello, I am ui thread.
qml: delay thread -> ui thread:  Hello, I am delay thread.

3.3 main.qml

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import "test.js" as TestJsWindow {width: 640height: 480visible: truetitle: qsTr("Thread")Row{spacing: 20Button{width: 200height: 100text: "ui btn"onClicked: {console.log(Qt.formatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss"), "ui thread")}}Button{width: 200height: 100text: "delay btn"onClicked: {console.log(Qt.formatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss"), "click delay btn-1")//发送数据myWorker.sendMessage({'msg': 'Hello, I am ui thread.'})console.log(Qt.formatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss"), "click delay btn-2")}}WorkerScript{id: myWorkersource: "test.js"//接收数据onMessage: {console.log("delay thread -> ui thread: ", messageObject.msg)}}}
}

3.4 test.js


function func_delay() {var cnt = 0;for(let i=0; i<1000000000; i++){cnt++;}console.log("delay thread", Qt.formatDateTime(new Date(),"yyyy-MM-dd HH:mm:ss"))
}WorkerScript.onMessage = function(message){func_delay()console.log("ui thread -> delay thread: ", message.msg)//发送数据WorkerScript.sendMessage({'msg': 'Hello, I am delay thread.'})
}

参考

Qt 之 qml WorkerScript使用

http://www.15wanjia.com/news/179911.html

相关文章:

  • 实训网站建设的心得总结苏州公众号开发公司
  • 株洲做网站的ASP.NET商业级数据库网站开发实战
  • 网站建设与运维预算淘宝内部优惠券网站怎么做
  • php体育网站模板无法打开网页如何解决
  • 建网站服务器用什么怎么做建设网站首页
  • 百度网站排名规则建材网站免费模板
  • 环江建设网站wordpress图片500
  • 做网站外包创业儿童网站源码
  • 网站开发工资一般多少钱网站建设及管理制度
  • 济宁网站建设seo凡科建设网站还用买服务器吗
  • 东莞市专注网站建设触屏手机网站
  • 架设网站是自己架设服务器还是租服务器国家专业分类目录
  • 卫生院网站建设浙江网站建设技术公司
  • 网站制作北京海淀视频制作专业软件
  • 装修的网站都有哪些可以做ps兼职的网站
  • 商务网站建设学期总结旺店通erp系统
  • 广州微网站建设哪家好创建公司的基本流程
  • 网站图片的作用正邦设计总部都空了
  • 档案门户网站建设方案一键生成原创文案
  • 做网站维护的收入怎么确认软件技术专科有出路吗
  • 物流网站购买物流单号个人网站设计与实现结论
  • 网站建设 个人模板下载海南公司网站建设哪家快
  • 网站换服务器对网站排名有影响吗衡水做网站建设公司
  • 工业信息化网站备案系统展示营销型网站
  • 建筑工程网站免费网站设计 北京店
  • 网站升级每天自动更新网络公司办公室图片
  • 如何制作网站?东莞系统app开发
  • 做网站时字幕怎么做工程造价信息网站
  • 手机网站模块关键词推广公司
  • 如何搜索网站的内容项目外包的成本构成