• 7039阅读
  • 1回复

widget状态在resizeEvent事件中很奇怪的问题 [复制链接]

上一主题 下一主题
离线beaujolais
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-15
描述起来可能不是很清楚,直接来一段测试代码吧。

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);
  8.     widget = new QToolBar(this);
  9.     addToolBar(Qt::BottomToolBarArea,widget);
  10.     widget->show();
  11.     resize(500,400);
  12. }
  13. MainWindow::~MainWindow()
  14. {
  15.     delete ui;
  16. }
  17. void MainWindow::resizeEvent(QResizeEvent *)
  18. {
  19.     if(widget->isVisible())
  20.  qDebug("isvisble");
  21.     else
  22.  qDebug("no");
  23. }


启动程序,会打印no。只有在启动时会这样,后面如果再有resize事件则是正常的。

奇怪的事,如果这段代码里再加入一个showEvent事件的处理,在其中打印一下widget->isVisble() 则是正确的,即为真。

烦请大家帮忙解答....
[/pre]
离线xtfllbl

只看该作者 1楼 发表于: 2010-11-15
在所有widget构造的时候是没有界面的,所以为no,而你自己在所谓的构造函数中加入resize实际上已经是mainwindow的第二次调用resize了。详细情况你可以查阅源代码,细细品味qt的实现。
上海欢迎您
快速回复
限100 字节
 
上一个 下一个