Qt中使用show函数的注意事项。

      前天做项目时遇到一个BUG:一个widget的部分子widget在symbian平台下始终显示不出来,追了很久,终于发现是show函数的位置在作怪。

      在Q中:要想显示一个widget最简单的方式就是调用show函数,(这也包括showFullScreen等其他显示函数),但是这个函数到底该在哪里调?这个还是需要注意的。

      一个QWidget窗口,我们在其构造函数中创建若干子widget。一般我们都是在创建完之后再来调用show函数,亦即:

 

      MyWidget  widget;

      widget.show();

 

      但是如果我们在父窗口的构造函数内部就调用show()函数会出现什么现象呢?举例如下:

 

      MyWidget::MyWidget(QWidget*parent):QWidget(parent)

      {

            iChild1 = new QWidget(this);

            //位置1

    iChild2 = new QWidget(this);

            //位置2

    iChild2 = new QWidget(this);

            //位置3

      }

 

       如果我们分别在上述3个位置处调用show()函数,会有什么效果呢?

       1:在Windows平台下:没有任何问题,三个子窗口都会准确的显示出来。

       2:在Symbian平台下:在哪个位置处调用的show()函数,则该位置后边的所有代码创建的子窗口将全部显示不出来!!

 

       所以为了实现所谓的cross-platform ,我们最好不要再构造函数中调用show()函数,而是在该窗口创建完成之后来调用!

 

   说明:

    1:上述情况只有在窗口的父类是QWidget或其派生类时才会出现,而且只在symbian平台下才有。

    2:如果你用的是QGraphicsView,则无论你show函数在构造函数中的哪个位置,都不会出现这个问题。

    3:本例测试平台为:Qt4.6.2

 

 

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值