《QDebug 2022年8月》

news/2024/5/17 21:24:55/文章来源:https://blog.csdn.net/gongjianbo1992/article/details/126633078

一、Qt Widgets 问题交流

1.QWidget鼠标事件穿透

对于一些透明或者半透明的QWidget,可能需要点击其下方的按钮或其他组件,但是QWidget本身是会接收这些鼠标事件的,需要一些额外的处理。下面是百度到的一些方法:

方式A.设置setAttribute(Qt::WA_TransparentForMouseEvents, true),设置之后该QWidget对象树就不再处理鼠标事件。最大的缺点就是不仅该QWidget不响应鼠标事件,它上面的其他组件也没法响应鼠标事件了。

方式B.setMask把底部要点击的地方抠出来,缺点是抠出来的地方就成了全透明,不适合半透明的需求:

    QRegion reg(ui->widget->rect());//bottom为被widget挡住的按钮auto btn_area=ui->btnBottom->geometry();btn_area.moveTo(btn_area.topLeft()-ui->widget->geometry().topLeft());reg-=QRegion(btn_area);ui->widget->setMask(reg);

方法C. QWdidget鼠标事件处理先判断坐标点下方是否有其他组件,有则传递下去:

void mouseMoveEvent(QMouseEvent *event){transMouseEvents(event);
}void mousePressEvent(QMouseEvent *event){transMouseEvents(event);
}void mouseReleaseEvent(QMouseEvent *event){transMouseEvents(event);
}void mouseDoubleClickEvent(QMouseEvent *event){transMouseEvents(event);
}void transMouseEvents(QMouseEvent *event){if (this->parentWidget()) {    this->setAttribute(Qt::WA_TransparentForMouseEvents, true);QPoint pt = this->mapTo(this->parentWidget(), event->pos());QWidget *wid = this->parentWidget()->childAt(pt);if (wid) {pt = wid->mapFrom(this->parentWidget(), pt);QMouseEvent *mEvent = new QMouseEvent(event->type(), pt, event->button(), event->buttons(), event->modifiers());QApplication::postEvent(wid, mEvent);}this->setAttribute(Qt::WA_TransparentForMouseEvents, false);}
}

参考:QT 鼠标穿透 - 知乎 

二、Qt Quick 问题交流

1.打包命令问题

百度搜(QML打包),找到的结果一般都是这样的:

windeployqt 程序.exe --qmldir C:\Qt\Qt5.15.2\5.15.2\msvc2019_64\qml

这些博文上,--qmldir的参数一般都是指向Qt安装目录,但是通过查看文档可知,qmldir应该指向项目源码的qml目录,以查找导入了哪些模块,qmlimport才是用来指向安装路径或者其他依赖模块路径的。

文档:https://doc.qt.io/qt-5/windows-deployment.html 

三、其他

1.QAXObject在WPS环境下读取Excel的UsedRange.Value为空

一开始测试MS Office时如下的代码可以正常的读取到UsedRange的表格内容:

QAxObject *used_range = work_sheet->querySubObject("UsedRange");
auto range_data = used_range->property("Value").toList();

但是在测试WPS时,读取到的值是空的,修改为dynamicCall后就能正常读取了:

QAxObject *used_range = work_sheet->querySubObject("UsedRange");
auto range_data = used_range->dynamicCall("Value()").toList();

完整的测试代码如下:

void parseExcel()
{const QString filepath = QFileDialog::getOpenFileName(this);if(filepath.isEmpty()){qDebug()<<"filepath is empty";return;}QSharedPointer<QAxObject> excel{new QAxObject};//分别尝试WPS和MS Office的excel组件if(!excel->setControl("KET.Application" )){qDebug() << "open wps excel failed";if(!excel->setControl("Excel.Application")){qDebug() << "open office excel failed";return;}}qDebug()<<"excel open";auto scope = qScopeGuard([=]{qDebug()<<"excel quit";//退出时关闭,不然excel进程没退出excel->dynamicCall("Quit()");});Q_UNUSED(scope)excel->setProperty("Visible", false);excel->setProperty("EnableEvents", false);excel->setProperty("DisplayAlerts", false);QAxObject *work_books = excel->querySubObject("WorkBooks");if(!work_books){qDebug()<<"query WorkBooks error";return;}work_books->dynamicCall("Open(const QString&)", filepath);QAxObject *active_book = excel->querySubObject("ActiveWorkBook");if(!active_book){qDebug()<<"query ActiveWorkBook error";return;}else{qDebug()<<"book open";auto book_scope = qScopeGuard([=]{qDebug()<<"book close";//bool是否保存修改active_book->dynamicCall("Close(Boolean)", false);});Q_UNUSED(book_scope)QAxObject *work_sheet = active_book->querySubObject("WorkSheets(int)", 1);if(!work_sheet){qDebug()<<"query WorkSheets error";return;}QAxObject *used_range = work_sheet->querySubObject("UsedRange");if(!used_range){qDebug()<<"query UsedRange error";return;}//全部读取,范围是上下左右最边上的数据所围城的矩形区域auto range_data = used_range->dynamicCall("Value()").toList();qDebug()<<"range data:"<<range_data;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_4205.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nacos下载和安装-windows

Nacos官网&#xff1a;https://nacos.io/zh-cn/ Nacos官方文档&#xff1a;https://nacos.io/zh-cn/docs/quick-start.html 一、下载 进入nacos官网&#xff0c;选择相应版本下载 github上nacos的zip资源&#xff0c;下载速度奇慢问题。 百度网盘&#xff1a;https://pan.b…

云原生游戏第 2 讲:OpenKruiseGame 设计理念详解

后疫情时代&#xff0c;游戏行业步入高质量发展期&#xff0c;游戏云原生化势在必行。不久前&#xff0c;针对游戏行业云原生落地的难点、游戏玩家服容器化的困境等问题&#xff0c;阿里云容器服务团队通过直播课程《云原生游戏第1讲&#xff1a;游戏玩家服容器化的困境与解法》…

PMP每日一练 | 考试不迷路-9.1(包含敏捷+多选)

&#xff01;PMP最新考试通知 &#xff01; ​2022年6-8月落考考生可免费重考一次&#xff01; 11月考试可以报名 ​&#xff08;9月考试改到11月) 每日5道PMP习题助大家上岸PMP&#xff01;&#xff01;&#xff01; ​1.项目经理接到一个开发新产品的项目&#xff0c;这…

一体式城市内涝监测站

一体式城市内涝监测站 计讯物联一体式城市内涝监测站&#xff0c;智能监测城市重点区域视频监控、水位、雨量、水量、流速等&#xff0c;目标数据实时上报云端&#xff0c;相关部门远程云平台同步监控(视频图像、水雨情、积水、排水工况)&#xff0c;智能化管理系统实现城市防…

网课答案公众号题库接口使用详情

网课答案公众号题库接口使用详情 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&…

ATF启动(四):BL31

1、BL2跳转BL31 在上一页在bl2_main函数中的最后一句是&#xff1a; smc(BL1_SMC_RUN_IMAGE, (unsigned long)next_bl_ep_info, 0, 0, 0, 0, 0, 0); 这个是触发smc操作。这个smc的handle在bl1的阶段就被制定了。 这个handle smc id是BL1_SMC_RUN_IMAGE。对应的handle函数是…

猿创征文|全方位快速了解事务的4种隔离级别

MySQL事务隔离级别事务以及事务的隔离级别1. 概念2. 事务的特性3. 事务的隔离级别3.1 Q&#xff1a;那么为什么事务需要有隔离级别呢&#xff1f;3.2 Q&#xff1a;那么什么事务并发会产生的问题&#xff1f;总结&#xff1a;不可重复读的和幻读很容易混淆3.3 Q&#xff1a;事务…

Dubbo - 远程debug

由于Dubbo的特性是远程调用&#xff0c;因此正常来说无法在本地进行debug 因为你调用的方法在别台机器上跑&#xff0c;你只能知道给他的input和他返回的结果&#xff0c;但没办法知道这个接口内部的执行&#xff0c;所以也没办法在裡面打断点进行debug 就算在本地有dubbo代码…

UE4 C++学习 浅析UProperty属性说明符

浅析UE4 UPROPERTY本文就 UProperty是什么?以及UProperty怎么用?做一个简单的总结。 什么是UPROPERTY? 首先看下官方的解释: 感觉还是比较模糊没看懂有什么用,我们接着往下看要知道UPROPERTY有什么用,我们首先要知道反射(Refection)这个机制。这个机制在Java和C#等语言都…

freeswitch的3XX重定向

概述 sip协议标准RFC3261中,对3XX重定向有明确的定义。 freeswitch中如何使用3XX redirect的特性,如何落地,应用场景有哪些?环境 centos:CentOS release 7.0 (Final)或以上版本 freeswitch:v1.8.7 GCC:4.8.53XX重定向 RFC3261中对3XX的响应定义是这样的。 3xx response…

版本4校园兼职软件遇到的问题和解决方法

出现问题&#xff1a; 每次只能保存一位用户信息&#xff0c;后面输入用户信息前面的用户信息会被覆盖 出现原因及解决方法&#xff1a; 因为暂存的temp对象被定义为全局变量&#xff0c;所以每次进去都被刷新为新对象&#xff0c;将其 User temp new User(); 放在方法内即…

【JAVAWEB开发】基于Java+Servlet+Ajax+jsp网上购物系统设计实现

哈喽~大家好呀&#xff0c;这篇给的大家带来的是网上购物系统设计。在传统电商时代&#xff0c;用户是先有需求再购买&#xff0c;用户对平台较为依赖&#xff0c;商家对消费者很难有直接的影响力&#xff0c;而如今社交 电商解决了产品质量的信息不对称问题&#xff0c;电商已…

卷积神经网络卷积层公式,卷积神经网络层数计算

卷积神经网络算法是什么&#xff1f; 一维构筑、二维构筑、全卷积构筑。 卷积神经网络&#xff08;ConvolutionalNeuralNetworks,CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;FeedforwardNeuralNetworks&#xff09;&#xff0c;是深度学习&a…

【校招VIP】[产品][一本][6分]简历原则上写一页

校招的简历原则上只能写一页,尤其是电子版。因为校招是集中面试,会有太多简历,所有人都只有一页的话,写两页的很容易被漏掉一页关注【校招VIP】公众号,回复【简历】,添加校招顾问微信,即可获取简历指导! 简历背景:21届一本产品 简历评分:6分 一、学员简历 ​​​二、…

安装mkimage工具,解决报错“Invalid CPU Type - valid names are:”

问题 前两天在编译博雅芯片厂商提供的内核时&#xff0c;总是无法编译通过&#xff0c;试了好几次都提示如下错误&#xff1a; Invalid CPU Type - valid names are: alpha, arm, x86, ia64, m68k, microblaze, mips, mips64, nios2, powerpc, ppc, s390, sh, sparc, sparc64…

神经网络架构图讲解教程,神经网络架构图讲解图

什么是全连接神经网络&#xff1f;怎么理解“全连接”&#xff1f; 1、全连接神经网络解析&#xff1a;对n-1层和n层而言&#xff0c;n-1层的任意一个节点&#xff0c;都和第n层所有节点有连接。即第n层的每个节点在进行计算的时候&#xff0c;激活函数的输入是n-1层所有节点的…

猿创征文|C++来时路 _ 重温经典之C++类和对象 | 三大特性之一 - 封装 | 腾讯面试题

&#x1f49b; 前情提要&#x1f49b; 本章节是C的类和对象- 封装的相关知识~ 接下来我们即将进入一个全新的空间&#xff0c;对代码有一个全新的视角~ 以下的内容一定会让你对C有一个颠覆性的认识哦&#xff01;&#xff01;&#xff01; 以下内容干货满满&#xff0c;跟上…

【自然语言处理(NLP)】基于ERNIE语言模型的文本语义匹配

【自然语言处理&#xff08;NLP&#xff09;】基于ERNIE语言模型的文本语义匹配 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云星级博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项目总负责人&#xff0c;全…

GD32单片机使用Jlink在SWD无法下载和仿真

1. SWD引脚锁解方法1 https://developer.arm.com/documentation/101455/0100/Setup-ULINK2/Configure-uVision-for-Debugging/Cortex-M-Debugging/Debug-Driver-Configuration/Debug 拉低RST引脚&#xff0c;修改SW速率&#xff0c;即使用在MCU复位状态下&#xff0c;通过SWD…

江西涉农县开展一对一指导服务 国稻种芯:重点保障水稻生长

江西涉农县开展一对一指导服务 国稻种芯&#xff1a;重点保障水稻生长 时代周报 王晨婷 邓宇晨 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 国稻种芯中国水稻网 中国三农智库网-功能性农业农业大健康大会报道 万赢信采编&#xff1a;8月27日&#xff0c;接连几周高温之…