QML与C++之间自定义对象输出

1.定义暴露的C++类 Message.h

#ifndef MESSAGE_H
#define MESSAGE_H#include "QObject"
#include "MessageAuthor.h"class Message : public QObject
{Q_OBJECTQ_PROPERTY(MessageAuthor* author READ author )public:explicit Message(QObject *parent = nullptr): QObject(parent){m_author = new MessageAuthor();}MessageAuthor* author() const {return m_author;}private:MessageAuthor* m_author;
};#endif // MESSAGE_H

2.定义自定义的属性对象类MessageAuthor

#ifndef MESSAGEAUTHOR_H
#define MESSAGEAUTHOR_H#include "QObject"class MessageAuthor : public QObject
{Q_OBJECTQ_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged )
public:explicit MessageAuthor(QObject *parent = nullptr): QObject(parent){}void setName(const QString &a) {if (a != m_name) {m_name = a;emit nameChanged();}}QString name() const {return m_name;}void setEmail(const QString &a) {if (a != m_email) {m_email = a;emit emailChanged();}}QString email() const {return m_email;}private:QString m_name;QString m_email;signals:void emailChanged();void nameChanged();
};#endif // MESSAGEAUTHOR_H

3.main.cpp中注册类型

#include "Message.h"  //引用头文件//在main函数代码中注册
qmlRegisterType<Message>("Message", 1, 0, "Message");

4.在main.qml文件中使用

import QtQuick 2.15
import QtQuick.Window 2.15
import Message 1.0
import QtQuick.Controls 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")Message{id:message}Button{id: button1text:"点击1"onClicked: {message.author.name = "zhangsan"message.author.email = "zhangsan.162.com"}}Button{id: button2text:"点击2"anchors.top: button1.bottomanchors.topMargin: 20onClicked: {message.author.name = "lisi"message.author.email = "lisi.162.com"}}Label{text: message.author.name + message.author.emailanchors.top: button2.bottomanchors.topMargin: 10}
}

5.运行结果

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

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

相关文章

短视频账号矩阵系统开发源头

随着经济的高速的发展&#xff0c;越来越多的人进入短视频领域&#xff0c;都想抓住这个流量风口&#xff0c;现如今&#xff0c;短视频领域竞争加剧&#xff0c;为了满足用户对创新、多样化和高质量内容的需求&#xff0c;新版短视频矩阵运营系统应运而生。抖去推系统4.0新版&…

MySQL 忘记root密码后重置密码操作

在忘记 MySQL 密码的情况下&#xff0c;可以通过 --skip-grant-tables 关闭服务器的认证&#xff0c;然后重置 root 的密码&#xff0c;具体操作步骤如下。 步骤 1)&#xff1a;关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2)&#xff1a;输入mysqld -…

CANBeded——诊断自动生成代码

目录 一、如何自动生成代码 二、借鉴之处 一、如何自动生成代码 准备&#xff1a; .gny——geny工程 .dbc——CAN 信号矩阵 .cdd——诊断文件 .cfg文件——工程文件宏定义 1.1 打开gny文件 1.2 导入dbc文件 根据dbc文件更新can消息 channel0,configurable options,Acceptan…

java一对一聊天

我们首先要完成服务端&#xff0c;不然出错&#xff0c;运行也要先运行服务端&#xff0c;如果不先连接服务端&#xff0c;就不监听&#xff0c;那客户端不知道连接谁 服务端 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.Actio…

Failed to resolve org.junit.platform:junit-platform-launcher:1.9.3

springboot 跑 unit test 的时候&#xff0c;如果报错如题的话&#xff0c;可以更改idea 里的 Settings ——> HTTP Proxy 配置为&#xff1a;Auto-detect proxy settings

富时中国a50指数准确吗

富时中国A50指数简介 富时中国A50指数&#xff08;FTSE China A50 Index&#xff09;是富时罗素指数有限公司&#xff08;FTSE Russell&#xff09;编制的&#xff0c;旨在反映中国A股市场50家市值较大、流动性较好的公司的股价表现。它是国际上对中国A股市场投资者影响较大的…

leetcode刷题:611.有效三角形的个数(双指针实现)

题目地址&#xff1a;有效三角形的个数 解决此题时&#xff0c;首先需要知道的是如何判断三个数字是否能够构成三角形。 我们知道&#xff0c;三角形任意两边之和都大于第三边。所以判断三个数字是否能构成三角形需要进行三次比较&#xff08;最基础的思路&#xff09; 方法一…

算法-贪心思想

贪心的思想非常不好解释&#xff0c;而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来&#xff0c;但是非要解释一下怎么使用的贪心的话&#xff0c;就懵圈了。一般来说&#xff0c;贪心的题目没有固定的套路&#xff0c;一题一样&#xff0c;不过…

Windows系统的笔记本电脑要怎样做,才能控制iPad?

Windows 10.1803或以上版本并且支持5.0低功耗蓝牙&#xff08;BLE&#xff09;的台式电脑或笔记本电脑都可以通过蓝牙连接控制iPhone或iPad。 控制成功后&#xff0c;你可以在电脑上直接用鼠标操作iPhone或iPad&#xff0c;避免工作学习中频繁抬头低头切换界面&#xff0c;也可…

IMR TBR TBDR

IMR Immediate Mode Rendering(即时渲染)&#xff0c;是 PC 和主机 GPU 使用的渲染方式 IMR下的渲染示意图 每次渲染&#xff0c;都要读写Frame Buffer和Depth Buffer IMR优化 IMR需要大量的带宽和功耗&#xff0c;优化方式是L1、L2 Cache大缓存&#xff0c;不适用于移动G…

HASH 哈希算法之MD5 算法

1. 哈希算法&#xff0c;用C 写的 #include <iostream> #include <iomanip> #include <cstring> #include <openssl/md5.h> #include <stdio.h>using namespace std;int main() {string str "hello world";unsigned char digest[MD5…

谷歌ARCore认证,什么是ARCore认证

一、谷歌ARCore认证介绍 谷歌ARCore 是 Google 推出的用于打造增强现实体验的平台,利用移动设备的传感器以及相机通过不同的 API 让您的手机能够感知其所处环境、了解世界并进行信息交互。设备要使用谷歌的ARCore功能&#xff0c;需要进行测试并通过认证后方可预载或使用Googl…