QML 访问C++中的 对象,以及函数
2015-12-09 19:42
447 查看
/main.qml
//====================================================
// myclass.h
//====================================================
#include
2. 在qml中可以看到rectangle的背景颜色使用的是
//====================================================
// myclass.h
//====================================================
#include
#include
#include
#include
#include
class LTest : public QObject
{
Q_OBJECT
public:
LTest() {}
LTest(QDeclarativeContext *context)
: m_pContext(context)
{}
public slots:
void changedColor() {
m_pContext->setContextProperty("backgroundColor", QColor(Qt::red));
}
signals:
void data(QVariant data);
private:
QDeclarativeContext *m_pContext;
};
//====================================================
// main.cpp
//====================================================
#include
#include
#include
#include
#include
#include"myclass.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
QDeclarativeContext *context = view.rootContext();
context->setContextProperty("backgroundColor",
QColor(Qt::yellow));
LTest test(context);//
context->setContextProperty("test", &test);
view.setSource(QUrl::fromLocalFile("main.qml"));
view.show();
return app.exec();
}
======================================================
这个程序,官方网站有,我只是对做了一点点扩展,
1. 导出对象
// 在c++中创建一个对象
LTest test(context);
// 导出一个对象test到qml中
context->setContextProperty("test", /*qml 中能直接使用这个名访问C++中的对象*/
&test /*c++的对象名*/);
2. 导出变量, backgroundColor
context->setContextProperty("backgroundColor",
QColor(Qt::yellow));
2. 在qml中可以看到rectangle的背景颜色使用的是
backgroundColor
color: backgroundColor 只要在c++中改变 backgroundColor 的值,qml中的背景颜色也会自动变化。 3. qml中调用c++中的函数(对象的函数,必须是声明为 slot 的函数)。 public slots: void changedColor() {//c++中定义的插槽函数 m_pContext->setContextProperty("backgroundColor", QColor(Qt::red)); } qml中访问该函数, onClicked: {
// call the c++'s function,from qml
test.changedColor(); }
相关文章推荐
- C++多线程
- VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
- 一、C语言(基本概念)
- C#调用C++ DLL的方法
- Divide Two Integers
- Divide Two Integers
- Visual C++ Tips: 程序执行路径,一个容易被忽视的问题
- C++ STL中的vector的内存分配与释放
- Conclusion for Accustoming Yourself to C++
- Visual Studio 2015下载使用问题
- SQLite C++获取表信息、获取列名、获取列类型
- 只说说C++内联函数
- 浅谈C++中指针和引用的区别
- C++设计模式之AbstractFactory
- 学习笔记-delete p与delete []p-sizeof()-strtok
- C语言中extern的用法
- 树与二叉树
- c++实现skip list
- C++primer学习:标准库特殊设施:bitset
- c++实现的快速排序算法