找回密码
 立即注册
收起左侧

怎样在纯c++编写的窗口程序中插入QML编写的图形?

6
回复
10411
查看
[复制链接]
累计签到:230 天
连续签到:1 天
来源: 2014-12-22 17:59:20 显示全部楼层 |阅读模式
1Qter豆
我用的是QT5.3,在example里找的一个musicplayer例子,是C++写的。
然后我想在窗口里面绘制图形,比如一个矩形,而且是用QML写的矩形。

我添加了一个名为“rect.qml”的文件


然后在main.cpp中添加了以下代码:


结果运行起来发现是两个窗口:


我心里是想在界面里面绘制矩形的。
所以请教一下大神们我该怎么实现呢?
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

QQuickView不是widget,所以不能和widget界面一起使用。 好消息是widget提供了另外一种接口将QQuickView嵌入一个widget中。 我电脑里面的文档只有5.2的,里面只有QWidget的一个静态函数提供了这种功能。在5.3里面,新增加了另外一种更方便的嵌入方式,需要你自己谷歌一下了。
回复

使用道具 举报

尚未签到

2014-12-22 17:59:21 显示全部楼层
QQuickView不是widget,所以不能和widget界面一起使用。

好消息是widget提供了另外一种接口将QQuickView嵌入一个widget中。

我电脑里面的文档只有5.2的,里面只有QWidget的一个静态函数提供了这种功能。在5.3里面,新增加了另外一种更方便的嵌入方式,需要你自己谷歌一下了。
回复

使用道具 举报

累计签到:230 天
连续签到:1 天
2014-12-22 23:58:30 显示全部楼层
Joey_Chan 发表于 2014-12-22 21:55
QQuickView不是widget,所以不能和widget界面一起使用。

好消息是widget提供了另外一种接口将QQuickView嵌 ...

真的非常感谢,我会照这个思路去找的。

能再问个问题吗?我也试着用下面的代码去实现,但是不知道能不能用

如果能的话,接下去该怎么写,或者该怎么改?能给个思路吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

尚未签到

2014-12-23 09:20:44 显示全部楼层
木村拓哉 发表于 2014-12-22 23:58
真的非常感谢,我会照这个思路去找的。

能再问个问题吗?我也试着用下面的代码去实现,但是不知道能不能 ...

这个和qquickview是差不多的,也不是widget,要想嵌入widget还是必须遵循widget那边的文档
回复

使用道具 举报

累计签到:230 天
连续签到:1 天
2014-12-23 10:57:51 显示全部楼层
Joey_Chan 发表于 2014-12-23 09:20
这个和qquickview是差不多的,也不是widget,要想嵌入widget还是必须遵循widget那边的文档 ...

恩,谢啦                              !
回复

使用道具 举报

累计签到:230 天
连续签到:1 天
2014-12-23 19:15:59 显示全部楼层
本帖最后由 木村拓哉 于 2014-12-23 19:17 编辑

已经找到可以使用的方法了:

可以使用 QWidget::createWindowContainer()方法

QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(10, 10);
container->setMaximumSize(10, 10);
view->setSource(QUrl::fromLocalFile("../musicplayer/rect.qml"));        
controlLayout->addWidget(container);

下面是controlLayout的定义:
QBoxLayout *controlLayout = new QHBoxLayout;

效果:

10*10分辨率的红色矩形已经加入了。

果然谷歌找东西方便啊,百度上能找到的也只有几位大神的博客。。。
贴上我找到的网址链接:请点击这里


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
参与人数 1人气 +4 收起 理由
xflcx1991 + 4 对我帮助很大!

查看全部评分总评分 : 人气 +4

回复

使用道具 举报

尚未签到

2014-12-23 21:49:32 显示全部楼层
木村拓哉 发表于 2014-12-23 19:15
已经找到可以使用的方法了:

可以使用 QWidget::createWindowContainer()方法

百度是拉低智商的,千万不要用,顶多无聊的时候用来搜贴吧的东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了