最近学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函数呢?
[问题]关于qt的一个疑问
- anod221
- 帖子: 76
- 注册时间: 2007-04-10 18:36
- 来自: 西安
- anod221
- 帖子: 76
- 注册时间: 2007-04-10 18:36
- 来自: 西安
我知道有这个函数,所以在覆盖的时候还先对其进行了调用。我是问的关于QWidget这个类,如果我不重载show,程序也能够把button给画出来。问题是作为一个父类,它是如何知道子类里面有一个button的成员,并在show函数不调用的时候能够把这个button给画出来呢?
我的想法是在父类QWidget中有一个用来保存其成员为QWidget类型的一个表(可能是链表),在调用button的构造函数的时候,就把这个button加进表里面,这样就保存了其成员。在show被调用的时候,父类中的QWidget::show会遍历该表,把每一个可见的成员分别调用其绘制自己的函数,所以我们就不用重载其中的show函数,其父类中的show函数也可以把所有的控件给画出来
我的想法是在父类QWidget中有一个用来保存其成员为QWidget类型的一个表(可能是链表),在调用button的构造函数的时候,就把这个button加进表里面,这样就保存了其成员。在show被调用的时候,父类中的QWidget::show会遍历该表,把每一个可见的成员分别调用其绘制自己的函数,所以我们就不用重载其中的show函数,其父类中的show函数也可以把所有的控件给画出来