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

qml学习之qwidget与qml结合使用并调用信号槽交互

学习qml系列之一

说明:
学习qml系列之qwiget和qml信号槽的交互使用,并在qwidget中显示qml界面

在qml中发送信号到qwidget里
在qwidget里发送信号给qml

在qwidget里面调用qml界面方式

方式一:使用QQuickView
这个是Qt5.0中提供的一个类,继承自QQickWindow中,用来显示qt quick用户界面:

QQuickView *view = new QQuickView;
view->setSource(QUrl::fromLocalFile("main.qml"));
view->show();

QQuickView基于QWindow,需要转换成 QWidget才能使用,还需要如下转换

     QQuickView *pView = new QQuickView();QWidget *Widget = QWidget::createWindowContainer(pView, this);pView->setResizeMode(QQuickView::SizeRootObjectToView);pView->setSource(QUrl("qrc:/main.qml"));

这样后面能直接调用由qml转换成的QWidget界面了。

方式二:使用QQuickWidget

QQuickWidget *pWidget = new QQuickWidget();
pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
pWidget->setSource(QUrl("qrc:/main.qml"));

该方法在Qt5.3中提供的一个类,继承自QWidget,是QQuickWidget一个很方便的包装器,用于显示Qt Quick用户界面

源码:
qml文件源码:

import QtQuick 2.1Rectangle {id: rootcolor: "green"width: 200height: 200// 发送给 Qt Widgets 的信号signal qmlSignal// 从 Qt Widgets 接收到的信号signal cSignal//信号的名称不能以大写开头Text {id: myTexttext: "Click me"font.pointSize: 14anchors.centerIn: parent}MouseArea {anchors.fill: parentonClicked: qmlSignal()}// 信号处理程序(处理从 Qt Widgets 接收到的信号)onCSignal: {root.color = "blue"myText.text = "Call the qml signal handler"}
}

注意:qml中信号的名称不能以大写开头,然后添加到Qt的资源文件中

添加qml quick

QT       += core gui qml quick
#include "widget.h"
#include "ui_widget.h"
#include "widget.h"
#include <QQuickView>
#include <QVBoxLayout>
//#include <QQuickWidget>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{
//    ui->setupUi(this);resize(300, 300);// 方式一QQuickView *pView = new QQuickView();QWidget *pWidget = QWidget::createWindowContainer(pView, this);pView->setResizeMode(QQuickView::SizeRootObjectToView);pView->setSource(QUrl("qrc:/main.qml"));// 方式二
//    QQuickWidget *pWidget = new QQuickWidget();
//    pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
//    pWidget->setSource(QUrl("qrc:/main.qml"));m_pButton = new QPushButton(this);m_pButton->setText("Qt Widgets...");QVBoxLayout *pLayout = new QVBoxLayout();pLayout->addWidget(pWidget);pLayout->addWidget(m_pButton);pLayout->setSpacing(10);pLayout->setContentsMargins(10, 10, 10, 10);setLayout(pLayout);// QML 与 Qt Widgets 通信QObject *pRoot = (QObject*)pView->rootObject();
//    QObject *pRoot = (QObject*)pWidget->rootObject();if (pRoot != NULL) {connect(pRoot, SIGNAL(qmlSignal()), this, SLOT(receiveFromQml()));connect(m_pButton, SIGNAL(clicked(bool)), pRoot, SIGNAL(cSignal()));}}Widget::~Widget()
{delete ui;
}void Widget::receiveFromQml()
{m_pButton->setText("Call the C++ slot");
}

由于我使用的版本时5.14.1版本,用的QQuickView类

效果如下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

qml学习之qwidget与qml结合使用并调用信号槽交互

学习qml系列之一说明&#xff1a; 学习qml系列之qwiget和qml信号槽的交互使用&#xff0c;并在qwidget中显示qml界面 在qml中发送信号到qwidget里 在qwidget里发送信号给qml 在qwidget里面调用qml界面方式 方式一&#xff1a;使用QQuickView 这个是Qt5.0中提供的一个类&…...

【 华为OD机试 2023】 组装新的数组(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述备注用例题目解析C++JavaScriptJavaPython题目描述 给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则: R中元素总和加起来等于MR中的元素可以从N中重复选取R中的元素最多只能有1个不在N中,且比N中…...

【洛谷 P2089】烤鸡(循环枚举)

烤鸡 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡&#xff08;本是同畜牲&#xff0c;相煎何太急&#xff01;&#xff09;Hanke 吃鸡很特别&#xff0c;为什么特别呢&#xff1f;因为他有 101010 种配料&#xff08;芥末、孜然等&#xff09;…...

windows10安装ubantu双系统

windows10安装ubantu双系统 文章目录windows10安装ubantu双系统一、安装前准备1.前期说明2.制作U盘启动器3.设置硬盘分区相关4.设置给ubantu系统的硬盘大小&#xff0c;设置为未分配&#xff08;删除卷&#xff09;二、进行安装1.设置bios相关2.进入bios启动界面选择U盘安装3.进…...

【华为OD机试 2023】 人数最多的站点/小火车最多人时所在园区站点(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述用例题目解析C++JavaScriptJavaPython励志做全网最全、解法最多的华为OD机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。每篇文章都有详细的结题步骤。有问题,随时解答。😁😁😁😁 目前为了造福广大…...

2024届暑期实习实录(阿里云大数据研发平台)

1. 项目介绍&#xff08;介绍一下你觉得有挑战的项目 &#xff08;1&#xff09;项目的痛点需求&#xff08;配置变更的痛点、你做的目的是什么&#xff1f;&#xff09; 思考方向&#xff1a;业务背景&#xff0c;用户需求&#xff1b;产品发展&#xff0c;产品现有局限问题…...

空口协议probe req和probe rsp 、auth req和auth rsp 、assoc req和assoc rsp讲解

我们经常可以看到抓到的报文主要有三种:probe req和probe rsp 、auth req和auth rsp 、assoc req和assoc rsp 。 建立联结的三个阶段 相互发现阶段:probe req和probe rsp probe是探测的意思 相互了解阶段:auth req和auth rsp auth是认证的缩写 建立关…...

vscode ssh一直卡在wget的解决方案

vscode ssh一直卡在wget的解决方案找到commit_id 在服务器下点进该目录 .vscode-server\bin 一般日期最新的那一串就是我们需要的commit_id下载vscode-server-linux-x64.tar https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable 将加粗部分替换…...

【Python学习笔记】第二十五节 Python MySQL

Python 连接到 MySQL 数据库有几种不同的连接方法&#xff0c;而且不是所有的方法都能与不同的操作系统很好地配合.MySQL connector/Python模块是Oracle支持的官方驱动&#xff0c;用于通过Python连接MySQL。该连接器完全是Python语言&#xff0c;而mysqlclient是用C语言编写的…...

折叠屏手机自带的屏幕表面层为什么不能自己撕?

计划入手折叠屏手机的小伙伴看过来&#xff0c;因为折叠屏手机外观的特殊形态&#xff0c;在日常使用中与普通直板手机屏幕的养护还是有着很大的不同&#xff0c;比如直板机入手后新机开箱撕膜这个操作&#xff0c;对于折叠屏手机来说&#xff0c;万万不可&#xff01;除此之外…...

20.hadoop系列之Yarn资源调度器

Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统&#xff0c;而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1.Yarn基础架构 Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Contai…...

206页16万字城市运行“一网统管”体系建设项目需求报告

本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 第 一 章 应用场景示例 一.1 一卡通人员管理针对企业厂区、办公楼等场所人员出入频繁、安保问题多样化、管理环节复杂等现状&#…...

【JS】数组Array的使用

arr.length 3 通过设置数组长度&#xff0c;实现截取数组&#xff0c;改变原数组 map 循环遍历数组&#xff0c;不改变原数组&#xff0c;返回一个新的数组&#xff08;可用变量接收&#xff09; forEach 循环遍历数组&#xff0c;不改变原数组 join 把数组转化为字符串&…...

2023年,软件测试怎么样?

2022年因为各种不可抗力原因&#xff0c;大厂裁员&#xff0c;失业等等频频受到关注。 不解释&#xff0c;确实存在&#xff0c;各行各业都很难&#xff0c;但是&#xff0c;说软件测试行业不吃香&#xff0c;我还真不认同&#xff08;不是为培训机构说好话&#xff0c;大环境…...

【学习笔记】NOMURA Programming Competition 2020

C - Folia 不难想到自底向上确定树的形态。可能要多尝试一下 一开始想错了好几个地方&#xff0c;服了 假设某一层有XXX个节点&#xff0c;那么上一层可能有⌈X2⌉,⌈X2⌉1,...,X\lceil\frac{X}{2}\rceil,\lceil\frac{X}{2}\rceil1,...,X⌈2X​⌉,⌈2X​⌉1,...,X个节点&…...

iis下常用程序的伪静态规则列表(包括wordpress、thinkphp)

shopex discuz2.0 discuz2.5 discuz3.x 淘宝客 ecshop phpwind参照http://www.west.cn/faq/list.asp?unid797通过主机面板设置即可 wordpress设置&#xff1a; 第一步&#xff1a; 1.新建一个“chineseurl.php”文件&#xff1a;在里面写入以下代码上传到wordpress安装目录。…...

【Python语言基础】——Python Select From

Python语言基础——Python Select From 文章目录 Python语言基础——Python Select From一、Python Select From一、Python Select From 从表中选取 如需从 MySQL 中的表中进行选择,请使用 “SELECT” 语句: 实例 从表 “customers” 中选取所有记录,并显示结果: import m…...

数据增广真有那么神奇吗?

作者&#xff1a;皮皮雷 来源&#xff1a;投稿 编辑&#xff1a;学姐 论文题目 How Effective is Task-Agnostic Data Augmentation for Pretrained Transformers? 论文作者 S. Longpre, Y. Wang, and C. DuBois 论文发表于 2020 EMNLP findings 摘要 任务无关的数据增广…...

常用基础硬件知识 - 判断MOS管导通

目录1. 概述2. 判断MOS管的导通1. 概述 本文主要记录下基础的硬件知识&#xff0c;方便自己查阅。 2. 判断MOS管的导通 在产品硬件设计中&#xff0c;有时需要程序控制一些电源使能。 1.原理图已经标出了G极(gate)—栅极、S极(source)—源极、D极(drain)—漏极。 如果没有标…...

2023金三银四,测试人还能找到好工作吗?

嫌看文章麻烦的朋友点这里&#xff1a;2023最新软件测试行业变革细谈之我们该如何应对&#xff1f; 按照往年的惯例&#xff0c;春节后复工的 3 月、4 月是人员跳槽最频繁的时候&#xff0c;俗称“金三银四”。然而&#xff0c;市场大环境的影响&#xff0c;很多行业感受到了一…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...