当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]关于qt的一个疑问
帖子发表于 : 2007-09-09 22:55 
头像

注册: 2007-04-10 18:36
帖子: 76
地址: 西安
送出感谢: 0 次
接收感谢: 0 次
最近学qt,能小编一点东西了,忽然今天发现一些事情,敬请高手解答

这样的代码:
class anoPushButton:public QWidget
{
Q_OBJECT
public:
anoPushButton():QWidget(), button("Hello World", this){
QWidget::setGeometry(QRect(0,0, 100,50));
button.setGeometry(QRect(10,10, 80, 30));
connect(&button, SIGNAL(clicked()), this, SLOT(OnClk()));
}
private:
QPushButton button;
public slots:
void OnClk()
{
emit clk();
}
void show() //!!!!!!!!!!!!!!!!!!!!
{
QWidget::show();
button.show();
}
signals:
void clk();
};

后来我想这个show函数不要行不行,注释掉后编译得到一样的结果,我就不明白了,为什么它能够自己自动调用QPushButton的show呢?是不是在注册button的那个parent的指针可能调用了像这样的一个parent->AddWidgetItem的函数来用一个表保存自己的widget,在show的时候遍历这个表来逐个调用其show函数呢?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-09-10 1:03 
头像

注册: 2007-05-10 19:42
帖子: 255
地址: 南京, Deutschland, Karlsruhe
送出感谢: 0 次
接收感谢: 0 次
基类里有同名的虚函数


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-09-10 12:28 
头像

注册: 2007-04-10 18:36
帖子: 76
地址: 西安
送出感谢: 0 次
接收感谢: 0 次
我知道有这个函数,所以在覆盖的时候还先对其进行了调用。我是问的关于QWidget这个类,如果我不重载show,程序也能够把button给画出来。问题是作为一个父类,它是如何知道子类里面有一个button的成员,并在show函数不调用的时候能够把这个button给画出来呢?

我的想法是在父类QWidget中有一个用来保存其成员为QWidget类型的一个表(可能是链表),在调用button的构造函数的时候,就把这个button加进表里面,这样就保存了其成员。在show被调用的时候,父类中的QWidget::show会遍历该表,把每一个可见的成员分别调用其绘制自己的函数,所以我们就不用重载其中的show函数,其父类中的show函数也可以把所有的控件给画出来


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译