Qt -我们所说的那些代码片段是什么意思?

Qt - What do we mean by those code snippets

本文关键字:片段 代码 是什么 意思 那些 我们 Qt      更新时间:2023-10-16

我对C++ GUI Programming with Qt 4书中的代码片段有一些疑问:

GoToCellDialog::GoToCellDialog(QWidget *parent):QDialog(parent)
这是否意味着我们继承了 QDialog(parent) ?或者,这到底是什么意思?
setupUi(this);

这里,这个代码片段是gotocelldialog.cpp文件的一部分,它是gotocelldialog.h头文件的实现。在这种情况下,我们所说的this是什么意思?我们要设置什么?这是一种什么样的设置呢?

谢谢。

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.
        }
};

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

回答您的问题:

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

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

setupUi(this);

简而言之:"用户界面编译器"(uic)将xml文件编译/翻译为c++代码,这些代码将被编译和链接。setupUi()函数确保您制作的Qt设计器小部件(生成的c++代码)被设置为您的代码通过构建Widget树来使用。