• 4581阅读
  • 9回复

关于Event发现一个很慎人的问题~~~【已解决】 [复制链接]

上一主题 下一主题
离线yangfanxing
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-22
在Event中用qDebug()输出几个变量瞅瞅:
然后很慎人的事情发生了:

一个小循环中qDebug()输出的顺序是乱的!!!
但又乱得很有艺术。。。

比如:

循环i = 1~4
qDebug << v1;

//一些计算
qDebug << v2;
qDebug << v3;

输出的形式
v1
v1
v1
v1

v2
v3
v2
v3

v2
v3
v2
v3

把“//一些计算”去掉:输出为:
v1
v2
v3

v1
v2
v3

v1
v2
v3
也就是期望的形式了~~~

很慎人吗???这个qDebug()的输出是不是跟程序执行的顺序无关呢?否则这也太。。。不对劲了吧?
[ 此帖被yangfanxing在2009-12-22 23:30重新编辑 ]
PHPWind好恶心。。。不想看这种界面。。。
离线benbenmajia

只看该作者 1楼 发表于: 2009-12-22
代码拿来看看
安然.....
离线yangfanxing
只看该作者 2楼 发表于: 2009-12-22
引用第1楼benbenmajia于2009-12-22 17:29发表的  :
代码拿来看看

  1. void QimgZoomIn::resizeEvent(QResizeEvent *event)
  2. {
  3.     qDebug("Resized.......................................");
  4.     iResizeTimesFlag++;
  5.     qDebug() << iResizeTimesFlag;
  6.     if(iResizeTimesFlag < 3)
  7.     {
  8.         qDebug() << "->in if<-";
  9.         qDebug() << "in if: iResizeTimesFlag = " << iResizeTimesFlag;
  10.         qDebug() << "_oImage:" << _oImage.size();
  11.         QPalette pal(palette());
  12.             _zImage = _oImage.scaledToWidth(size().width(),
  13.                                             Qt::SmoothTransformation);
  14.             pal.setBrush(QPalette::Window,
  15.                          QBrush(_zImage));
  16.         this->resize(this->width(), int(_zImage.height()));
  17. //        qDebug() << "_oImage:" << _oImage.size();
  18.         qDebug() << "_zImage:" << _zImage.size();
  19.         qDebug() << "event:" << event->size();
  20.         qDebug() << "window:" << this->size();
  21.         setPalette(pal);
  22.     }
  23.     iResizeTimesFlag = 0;
  24.     qDebug() << "->out of iResizeTimesFlag:" << iResizeTimesFlag;
  25. }


不知道我写的问题还是我理解的问题还是我表达的问题。。。你看吧~~~呵呵。。。
PHPWind好恶心。。。不想看这种界面。。。
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-22
你在 resizeEvent 里面调用了 resize ! 这能叫“一些计算”么?
离线dbzhang800

只看该作者 4楼 发表于: 2009-12-22
不过看了你这段代码,总算了解你先前的问题了。

先前把你的 “一个方向 另一个方向“ 理解成了相对的两个边,而不是相邻的两个边了。

你只是要固定高度和宽度的比例,问题简单多了
离线yangfanxing
只看该作者 5楼 发表于: 2009-12-22
引用第3楼dbzhang800于2009-12-22 17:49发表的  :
你在 resizeEvent 里面调用了 resize ! 这能叫“一些计算”么?


啊,,,见笑了~~~
PHPWind好恶心。。。不想看这种界面。。。
离线dbzhang800

只看该作者 6楼 发表于: 2009-12-22
  1. 谢谢关注~
  2. 我现在用了这个比较笨的方法~
  3. 有什么方便的方法提供下么~~呵呵。。。
  4. 谢谢哈~~~

东西就是你写的那些,不过应该可以做些调整

首先确定一点:你要的是 w 和 h 比例固定

这样一来,resizeEvent 中只需一个 if 语句

  
  1. if (w == static_cast<int>(h*factor))
  2. {
  3. 进行你的painter等操作
  4. }
  5. else
  6. {
  7. 只需 resize一下
  8. }
离线yangfanxing
只看该作者 7楼 发表于: 2009-12-22
Re:关于Event发现一个很慎人的问题~~~【已解决】
引用第6楼dbzhang800于2009-12-22 23:20发表的  :
  1. 谢谢关注~
  2. 我现在用了这个比较笨的方法~
  3. 有什么方便的方法提供下么~~呵呵。。。
  4. 谢谢哈~~~

东西就是你写的那些,不过应该可以做些调整
.......


谢谢关注~~~
PHPWind好恶心。。。不想看这种界面。。。
离线nmiirq

只看该作者 8楼 发表于: 2009-12-23
楼主发贴是挺快的啊!
描述问题的准确性是很重要的,不然会造成别人的误解!
离线yangfanxing
只看该作者 9楼 发表于: 2009-12-23
引用第8楼nmiirq于2009-12-23 09:06发表的  :
楼主发贴是挺快的啊!

这个。。。不知话中是否有话,呵呵

引用第8楼nmiirq于2009-12-23 09:06发表的  :
描述问题的准确性是很重要的,不然会造成别人的误解!

嗯,下次多斟酌点儿~~~谢谢提醒~
PHPWind好恶心。。。不想看这种界面。。。
快速回复
限100 字节
 
上一个 下一个