Qt - 这些代码片段是什么意思

时间:2011-04-14 07:48:06

标签: c++ qt this

我刚从C++ GUI Programming with Qt 4书中找到关于这些代码的问题:

GoToCellDialog::GoToCellDialog(QWidget *parent):QDialog(parent)

这是否意味着我们继承 QDialog(parent)?或者,这究竟是什么意思?

setupUi(this);

此处,此代码段是gotocelldialog.cpp文件的一部分,该文件是gotocelldialog.h头文件的实现。在这种情况下this是什么意思?我们要设置什么?那会是什么样的设置?

感谢。

2 个答案:

答案 0 :(得分:2)

GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent)

:表示初始化列表。这意味着,parent作为参数传递给QDialog构造函数。我假设GoToCellDialog派生自QDialog,因此将parent发送给它的构造函数。因此,在执行GoToCellDialog的主体之前,执行QDialog构造函数。

这个例子可以给你一个想法 -

class foo
{
    int number ;
    public:
        foo(int i) : number(i) // Means copying value of i to number
        {}
};

class bar : public foo
{
    public:
        bar(int temp) : foo(temp)
        { // <- Before getting here, foo sub object must be constructed.
          //  Because the order of construction takes from parent to child.
        }
};

在上面的例子中,foo实例化时必须传递bar构造函数的参数。因此,初始化列表是唯一的方法,因为foo没有可用的默认构造函数(即没有参数的构造函数)。

答案 1 :(得分:1)

回答你的问题:

  

这是否意味着我们继承了QDialog(父母)?

是的,这是基本的C ++继承。

  

setupUi(this);

简而言之:“用户界面编译器”(uic)将xml文件编译/转换为将被编译和链接的C ++代码。 setupUi()函数确保您设置的Qt设计器小部件(生成的C ++代码)被代码Building the Widget tree设置为使用。