首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用上下文属性将C++对象嵌入到QML中

用上下文属性将C++对象嵌入到QML中
EN

Ask Ubuntu用户
提问于 2014-03-08 08:09:49
回答 1查看 5.4K关注 0票数 5

根据Qt5文档:公开方法,包括qt插槽继承自QObject的C++类的所有公共插槽,在这里可以从QML访问我所做的:

C++

代码语言:javascript
运行
AI代码解释
复制
class MyClass : public QObject
{
    Q_OBJECT

public slots:
    void doStuffFromQmlSlot()
    {
        qDebug() << Q_FUNC_INFO;
    }

public:
    MyClass()
    {
        qDebug() << Q_FUNC_INFO;
    }
};

我的main.cpp包含:

代码语言:javascript
运行
AI代码解释
复制
MyClass myClass;
QQmlEngine engine;
engine.rootContext()->setContextProperty( "myclass", &myClass );
QQmlComponent component( &engine, QUrl::fromLocalFile("qml/qtquick-01/main.qml") );
component.create();

QML

代码语言:javascript
运行
AI代码解释
复制
import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            myclass.doStuffFromQmlSlot();

            Qt.quit();
        }
    }
}

实际上,QtCreator似乎将公开的myclass对象识别到QML中,因为它支持类名(myclass)和公共槽doStuffFromQmlSlot()的自动完成。不幸的是,当我运行应用程序时,我得到了以下错误:

ReferenceError: myclass未定义

知道我做错了什么吗?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2014-03-08 11:25:34

我重用了您的qml文件,在QtCreator中启动了一个新项目。

请在下面找到我用来成功编译和使用应用程序的文件:

项目文件: test.pro

代码语言:javascript
运行
AI代码解释
复制
# The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp

# Please do not modify the following two lines. Required for deployment.
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()

HEADERS += myclass.h

myclass.h:

代码语言:javascript
运行
AI代码解释
复制
#include <QObject>
#include <qdebug.h>

class MyClass : public QObject
{
    Q_OBJECT

public slots:
    void doStuffFromQmlSlot()
    {
        qDebug() << Q_FUNC_INFO;
    }

public:
    MyClass()
    {
        qDebug() << Q_FUNC_INFO;
    }
};

main.cpp:

代码语言:javascript
运行
AI代码解释
复制
#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QQmlContext>
#include "myclass.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    MyClass myClass;

    QtQuick2ApplicationViewer viewer;
    viewer.rootContext()->setContextProperty("myclass", &myClass);
    viewer.setMainQmlFile(QStringLiteral("qml/main.qml"));
    viewer.showExpanded();

    return app.exec();
}

qml/main.qml正是您问题中提供的片段

如果您使用QtCreator启动项目,您还将准备好使用qtquick2applicationviewer/文件夹。然后qmake && make && ./test将启动应用程序。如果单击text元素,您将得到:

代码语言:javascript
运行
AI代码解释
复制
MyClass::MyClass() 
void MyClass::doStuffFromQmlSlot()
票数 5
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/431368

复制
相关文章
MySQL按天,按周,按月,按时间段统计
自己做过MySQL按天,按周,按月,按时间段统计,但是不怎么满意,后来找到这位大神的博客,转载一下,谢谢这位博主的分享
似水的流年
2018/08/01
4.2K0
MySQL按天,按周,按月,按时间段统计
自己做过MySQL按天,按周,按月,按时间段统计,但是不怎么满意,后来找到这位大神的博客,转载一下,谢谢这位博主的分享
似水的流年
2019/12/09
5.1K0
MySQL按天,按周,按月,按时间段统计【转载】
自己做过MySQL按天,按周,按月,按时间段统计,但是不怎么满意,后来找到这位大神的博客,转载一下,谢谢这位博主的分享
全栈程序员站长
2021/05/19
3.1K0
Mysql 根据时间戳按年月日分组统计(做个收藏)
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
IT小马哥
2020/03/18
4.4K0
MySQL按日期分组并统计截止当前时间的总数实例教程
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;
星哥玩云
2022/08/18
4.3K0
MySQL按日期分组并统计截止当前时间的总数实例教程
Logstash 索引数据按周归档
日志分析平台对网络设备和服务器日志进行收集时发现索引数据按天归档单个索引的大小能控制在1G 以内,ELk集群产生的索引数量过多,于是决定将索引数据归档规则改为按周归档。
Kevin song
2021/01/08
1.4K0
MySQL 分组函数
分组函数(GROUP BY语句),用来跟聚合函数结合,根据一个或者多个列对结果集进行分组。
程序媛淼淼
2022/09/01
4.8K0
MySQL 分组函数
mysql分组查询
group by (1) group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组 (2) group by可用于单个字段分组,也可用于多个字段分组 select * from employee; +------+------+--------+------+------+-------------+ | num | d_id | name | age | sex | homeaddr | +------+------+--------+------+------+
Java学习123
2018/05/16
4K0
Mysql——分组统计
 💟💟前言 🥇作者简介:友友们大家好,我是你们的小王同学😗😗 🥈个人主页:小王同学🚗 🥉 系列专栏:牛客刷题专栏📖 📑 推荐一款非常火的面试、刷题神器👉牛客刷题 今天给大家带来的系列是:Mysql——分组统计 mysql 刷题 系列 牛客网 牛客网里面有非常多得面试真题 包含 java sql c++等多种语言实现  select语句🎪 使用group   by子句对列进行分组【先创建测试表】 select column1 column2 column3 .....from  ta
王同学要努力
2022/12/21
5.4K0
Mysql——分组统计
MySQL分组函数
关键字: having 分组查询时需要用到筛选条件 需要用 having 关键字
指剑
2022/07/17
2K0
Mysql约束、分组查询
主键其实只能有一个, 如果在图形界面当中选择多个字段作为主键, 那么程序会自动帮我们创建联合主键
友儿
2022/09/28
3.8K0
MySQL分组需求探秘
前两天同事有个MySQL数据分组的需求,如下测试数据,需要找出每个name分组中create_date最近的记录,
bisal
2021/09/06
2.8K0
MySQL分组需求探秘
mysql实现分组排序和不分组排序
大前提 假如你不懂mysql中“=”和“:=”的区别,需要去补习一下这两个知识的用法。 关于mysql中“=”和“:=”的区别,可以参考我的另外一篇文章。https://blog.csdn.net/weixin_41261833/article/details/103509526 本文如果有不懂的地方,可以留言。 一、不分组排序 1、普通排名:从1开始,按照顺序一次往下排(相同的值也是不同的排名)。 -- 方法一 select m.*,@r :=@r + 1 as rank from mian62 m,(s
数据分析与统计学之美
2021/11/25
3.6K0
Mysql横向分组统计
(a)
全栈程序员站长
2021/05/19
4.7K0
mysql多字段分组
分组查询是对数据按照某个或多个字段进行分组,MYSQL中使用group by关键字对数据进行分组,基本语法形式为:
别团等shy哥发育
2023/02/25
8K0
mysql多字段分组
Excel公式技巧67:按条件将数据分组标识
如下图1所示的工作表,我们想使用数字将数据分成几组,其标准是:第1次出现笔记本且在区域A至第2次出现笔记本且在区域A之间的数据为第1组,标识为1;第2次出现笔记本且在区域A至第3次出现笔记本且在区域A之间的数据为第2组,标识为2,依此类推。
fanjy
2020/12/08
3.7K0
Excel公式技巧67:按条件将数据分组标识
MySQL实现按天分组统计,提供完整日期列表,无数据自动补0
业务需求 最近要在系统中加个统计功能,要求是按指定日期范围里按天分组统计数据量,并且要能够查看该时间段内每天的数据量。
星哥玩云
2022/08/18
5.8K0
MySQL实现按天分组统计,提供完整日期列表,无数据自动补0
轻松将竖排数据按分组整理成横排!(动画)
这个问题的解法其实并不复杂,但需要对分组的操作及其原理、基础函数的应用以及透视等内容比较熟悉,具体过程为:
大海Power
2021/08/31
1.1K0
mysql 按位取反_按位与,按位异或,按位取反「建议收藏」
PHP按位与或 (^ 、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在PHP中,按位与主要是对二进制数操作:
全栈程序员站长
2022/09/22
2.4K0
mysql中分组排序_oracle先分组后排序
​ 窗口函数(window functions),也被称为 “开窗函数”,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可对数据库数据进行实时分析处理。它是数据库的标准功能之一,主流的数据库比如Oracle,PostgreSQL都支持窗口函数功能,MySQL 直到 8.0 版本才开始支持窗口函数。
全栈程序员站长
2022/11/10
8K0

相似问题

mysql按周分组

11

按周分组的MySQL

13

在年底按周MySQL分组

34

如何在MySQL中按周分组?

97

返回按周分组的行数MySQL

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档