• 10206阅读
  • 9回复

QString类中的setNum有何作用? [复制链接]

上一主题 下一主题
离线qnewert
 
只看楼主 正序阅读 楼主  发表于: 2012-05-01
遇到一个问题
133     /*
134     rectStr=tempStr.setNum(rect().x())+", "+
135             tempStr.setNum(rect().y())+", "+
136             tempStr.setNum(rect().width())+", "+
137             tempStr.setNum(rect().height());
          //显示座标的label
           rectPosLabel->setText(rectStr);

138     */
想把rect获得的座标显示QLabel上,但是悲剧的是,用这种方法得到的QString的几个数值都一样0,0,0,0.测试了几次,用这种方法获得的字符串都和第一个setNum的值一样。

QString rectStr=QString("%1, %2, %3, %4").arg(rect().x()).arg(rect().y()).arg(rect().width()).arg(rect().height());用这种方法可以得到rect的值为0,0,250,253.
是不是第一种方法不行?
如果想将数字转化为字符串是不是要用第二种方法呢?
求高手赐教。
qt,第一眼见到你,就深深的爱上你了。
离线qnewert
只看该作者 9楼 发表于: 2012-05-03
回 6楼(dbzhang800) 的帖子
恩。谢谢。C++也在学习中,有些细节太模糊。
7楼那篇帖子不错。
感谢各位网友的回复。
qt,第一眼见到你,就深深的爱上你了。
离线淳于半邪

只看该作者 8楼 发表于: 2012-05-03
数字转成字符串不是有QString::number()么
离线dbzhang800

只看该作者 7楼 发表于: 2012-05-03
离线dbzhang800

只看该作者 6楼 发表于: 2012-05-03
Re:回 3楼(dbzhang800) 的帖子
引用第5楼qnewert于2012-05-02 18:38发表的 回 3楼(dbzhang800) 的帖子 :
我以为她会覆盖之前的赋值。这里好象无法覆盖。

这个,好像没任何关系吧?


你实际上先定义
QString temp;


然后是四个顺序不定的(尽管当前主流编译器都是从右到左)
temp.setNum();
temp.setNum();
temp.setNum();
temp.setNum();不管如何,只有一个起作用。


再然后,你执行了
temp + temp + temp + temp
离线qnewert
只看该作者 5楼 发表于: 2012-05-02
回 3楼(dbzhang800) 的帖子
我以为她会覆盖之前的赋值。这里好象无法覆盖。
qt,第一眼见到你,就深深的爱上你了。
离线qnewert
只看该作者 4楼 发表于: 2012-05-02
回 2楼(jdwx) 的帖子
从现在开始,我也觉得更好用。
帮助文件没安装好。qt-assitant没装好。悲剧。
qt,第一眼见到你,就深深的爱上你了。
离线dbzhang800

只看该作者 3楼 发表于: 2012-05-02
引用第1楼qnewert于2012-05-01 21:00发表的  :
用tempStr+=tempStr.setNum(rect().x());
    tempStr+=tempStr.setNum(rect().y());
  tempStr+=tempStr.setNum(rect().width());
  tempStr+=tempStr.setNum(rect().heigth());这种方式也行
第一种为何不行?
.......

因为你对一个
tempStr 连续调用的四次 setNum(当然先调用哪一个后调用哪一个,严格说属于C++中的未指定行为)

然后同一个tempStr又连加四次
离线jdwx

只看该作者 2楼 发表于: 2012-05-01
看看帮助,用xxxxstring.arg()更方便。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线qnewert
只看该作者 1楼 发表于: 2012-05-01
用tempStr+=tempStr.setNum(rect().x());
    tempStr+=tempStr.setNum(rect().y());
  tempStr+=tempStr.setNum(rect().width());
  tempStr+=tempStr.setNum(rect().heigth());这种方式也行
第一种为何不行?
高手求救啊。
qt,第一眼见到你,就深深的爱上你了。
快速回复
限100 字节
 
上一个 下一个