首页| 论坛| 消息

标题:关于widget子控件的更新,调用show函数无法显示。
作者:家有布衣
日期:2016-09-19 11:54
内容:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
sleep(3);
QPushButton *button=new QPushButton(&w);
button->setGeometry(0,0,50,50);
button->setText("next");
w.show();
return a.exec();
}
在上面代码调用w的show()函数两次,在其左上角没有显示button。

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


#1 [dbzhang800 09-19 14:47]
这是正常的现象。第一个show() 之后,widget已经visible,第二次调用show,什么也不会干。
你需要考虑的是,你为什么要这么用(对一个widget调用2次show)。
或者你第二个show想表达的是 button->show();
#2 [家有布衣 09-19 16:31]
我做了个wifi列表,有个QWidget,上面添加QPushbutton来显示wifi信息并进行操作的。现在加入wifi列表更新,之后调用QWidget的show函数就没法显示列表。
#3 回 家有布衣 的帖子 [家有布衣 09-19 16:32]
家有布衣:我做了个wifi列表,有个QWidget,上面添加QPushbutton来显示wifi信息并进行操作的。现在加入wifi列表更新,之后调用QWidget的show函数就没法显示列表。 (2016-09-19 16:31) 
@dbzhang800
#4 [seahouse 10-14 07:54]
1楼大牛已经说过了,第二个show应该写成 button->show(); 而不是w->show();
#5 [yongjie 10-21 10:31]
其实调用一下update()即可。update() 调用paint()就应该可以显示了。

show() 只与hide()相应。这里需要的是repaint().

回复 发表
主题 版块