• 4860阅读
  • 6回复

[提问]关于指针对象到对象的问题(来源Qt官方例子) [复制链接]

上一主题 下一主题
离线tangbao203
 

只看楼主 倒序阅读 楼主  发表于: 2012-04-13

来源
   http://doc.qt.nokia.com/4.7-snapshot/draganddrop-draggableicons-dragwidget-cpp.html   下
void DragWidget::mousePressEvent(QMouseEvent *event) 个函数
QPixmap pixmap = *child->pixmap();

   //其中child->pixmap()    ,child  是一个QLabel 的对象,  这里返回 const QPixmap *为什么指针的指针 const QPixmap 可以转换为 QPixmap 非指针非常量的 对象.

离线dbzhang800

只看该作者 1楼 发表于: 2012-04-13
这可不叫 指针的指针

int *p;
int i;
...
i = *p;


建议:找本C++的书先补补课吧
离线tangbao203

只看该作者 2楼 发表于: 2012-04-13
麻烦你帮我解释一下吧,

看了一下 QPixmap 好像重载了 =运算符  
QPixmap &    operator= ( const QPixmap & pixmap )

实在不明白 为什么 前面为什么要加一个 星号
<td rightalign="" topalign"="">
<td bottomalign"="">
离线dbzhang800

只看该作者 3楼 发表于: 2012-04-14
引用第2楼tangbao203于2012-04-13 23:05发表的  :
麻烦你帮我解释一下吧,
看了一下 QPixmap 好像重载了 =运算符  
QPixmap &    operator= ( const QPixmap & pixmap )
.......

你只需要解释一下我上面贴的3行代码,答案自然就有了
离线roywillow

只看该作者 4楼 发表于: 2012-04-14
我想child肯定不是个QLabel,而是个QLabel*,是个指向QLabel的指针
然后他的pixmap()返回一个const QPixmap*,是个QPixmap的指针(真心不想再区分const之类的了……),这个指针指向这个label的图像
所以*child->pixmap()返回的就是这个指针指向的具体对象,然后将这个对象赋值给自己定义的那个QPixmap pixmap

至于那个int *p; int i; int*是数据类型,p是指针,*p是p指向的对象,所以可以直接赋值给i

我想应该就是这么理解的吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线fish0619

只看该作者 5楼 发表于: 2012-04-14
建议复习C语言的指针。二楼的解释是正确的。这样写可能会更清楚一点:


QPixmap pixmap = *(child->pixmap());


今天才知道,原来* ->是从右向左结合。我记不住,一向都是加括号。
离线tangbao203

只看该作者 6楼 发表于: 2012-04-15
非常感谢各位的指导!
快速回复
限100 字节
 
上一个 下一个