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

QGradient和QBrush是什么关系?

8
回复
7633
查看
[复制链接]
累计签到:49 天
连续签到:1 天
来源: 2015-7-31 15:02:22 显示全部楼层 |阅读模式
1Qter豆
  1.     QLinearGradient linearGradient(QPointF(40, 190), QPointF(70, 190));
  2.     QPainter painter(this);
  3.     painter.setBrush(linearGradient);
复制代码
为什么这样可以?setBrush的参数应该是QBrush阿。

最佳答案

查看完整内容

这个应该是发生了隐士转换,但最好还是显示的去构造setBrush(QBrush(linerGradient)); 这样别人看代码的时候就比较容易理解
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-7-31 15:02:23 显示全部楼层
这个应该是发生了隐士转换,但最好还是显示的去构造setBrush(QBrush(linerGradient)); 这样别人看代码的时候就比较容易理解
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-8-2 14:25:48 显示全部楼层
QBrush(const QGradient &) QBrush可以通过QGradient构造。
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-8-3 09:54:03 显示全部楼层
egan 发表于 2015-8-2 14:25
QBrush(const QGradient &) QBrush可以通过QGradient构造。

这个在帮助文档里面就有
主要是
# QLinearGradient linearGradient(QPointF(40, 190), QPointF(70, 190));
#     QPainter painter(this);
#     painter.setBrush(linearGradient);
这段代码,是实例代码,setBrush的参数是QBrush,但这里写的是QGradient。为什么可以执行?
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-8-3 10:20:35 显示全部楼层
painter.setBrush(linearGradient);需要一个QBrush对象,QBrush对象包含一个QBrush(const QGradient &) 构造函数,所以通过类型转换,实际传递的参数就是这个QBrush(linearGradient)。
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-8-3 10:40:35 显示全部楼层
egan 发表于 2015-8-3 10:20
painter.setBrush(linearGradient);需要一个QBrush对象,QBrush对象包含一个QBrush(const QGradient &) 构 ...

您好
如果一个函数声明为fun(class A);同时A的构造函数有class A(class  &B);
然后在调用fun的时候,就可以直接下fun(class B),
这是c++的一种语法吗?还是QT底层做东西了?谢谢您。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-8-4 09:30:59 显示全部楼层
xiaodong60606 发表于 2015-8-3 10:40
您好
如果一个函数声明为fun(class A);同时A的构造函数有class A(class  &B);
然后在调用fun的时候, ...

这是c++的类型转换,编译器自己推导出来的。
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2015-8-4 09:44:46 显示全部楼层
egan 发表于 2015-8-4 09:30
这是c++的类型转换,编译器自己推导出来的。

您好,这种技术在哪本书里有介绍?或者在百度上搜什么可以搜到?谢谢。自己做了和多年c++,都做的很肤浅,没有听说过这种技术,望指导。谢谢您。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-8-4 17:55:17 显示全部楼层
这不是技术,这就是类型转换。
回复

使用道具 举报

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

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