• 3516阅读
  • 5回复

[提问]关于widget子控件的更新,调用show函数无法显示。 [复制链接]

上一主题 下一主题
离线家有布衣
 

只看楼主 倒序阅读 楼主  发表于: 2016-09-19
  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     Widget w;    
  5.     w.show();
  6.     sleep(3);
  7.     QPushButton *button=new QPushButton(&w);
  8.     button->setGeometry(0,0,50,50);
  9.     button->setText("next");
  10.     w.show();
  11.     return a.exec();
  12. }

在上面代码调用w的show()函数两次,在其左上角没有显示button


如果去掉第一个show()则会显示,不明白为什么,求指点。



离线dbzhang800

只看该作者 1楼 发表于: 2016-09-19
这是正常的现象。第一个show() 之后,widget已经visible,第二次调用show,什么也不会干。

你需要考虑的是,你为什么要这么用(对一个widget调用2次show)。
或者你第二个show想表达的是 button->show();
4条评分好评度+1贡献值+1金钱+10威望+1
家有布衣 好评度 +1 - 2016-11-01
家有布衣 贡献值 +1 - 2016-11-01
家有布衣 威望 +1 - 2016-11-01
家有布衣 金钱 +10 - 2016-11-01
离线家有布衣

只看该作者 2楼 发表于: 2016-09-19
我做了个wifi列表,有个QWidget,上面添加QPushbutton来显示wifi信息并进行操作的。现在加入wifi列表更新,之后调用QWidget的show函数就没法显示列表。
离线家有布衣

只看该作者 3楼 发表于: 2016-09-19
回 家有布衣 的帖子
家有布衣:我做了个wifi列表,有个QWidget,上面添加QPushbutton来显示wifi信息并进行操作的。现在加入wifi列表更新,之后调用QWidget的show函数就没法显示列表。 (2016-09-19 16:31) 

@dbzhang800  
本帖提到的人: @dbzhang800
离线seahouse

只看该作者 4楼 发表于: 2016-10-14
1楼大牛已经说过了,第二个show应该写成 button->show(); 而不是w->show();
4条评分好评度+1贡献值+1金钱+10威望+1
家有布衣 好评度 +1 - 2016-11-01
家有布衣 贡献值 +1 - 2016-11-01
家有布衣 威望 +1 - 2016-11-01
家有布衣 金钱 +10 - 2016-11-01
离线yongjie

只看该作者 5楼 发表于: 2016-10-21
其实调用一下update()即可。update() 调用paint()就应该可以显示了。

show() 只与hide()相应。这里需要的是repaint().
4条评分好评度+1贡献值+1金钱+10威望+1
家有布衣 好评度 +1 - 2016-11-01
家有布衣 贡献值 +1 - 2016-11-01
家有布衣 威望 +1 - 2016-11-01
家有布衣 金钱 +10 - 2016-11-01
快速回复
限100 字节
 
上一个 下一个