我刚从C++ GUI Programming with Qt 4
书中找到关于这些代码的问题:
GoToCellDialog::GoToCellDialog(QWidget *parent):QDialog(parent)
这是否意味着我们继承 QDialog(parent)
?或者,这究竟是什么意思?
setupUi(this);
此处,此代码段是gotocelldialog.cpp
文件的一部分,该文件是gotocelldialog.h
头文件的实现。在这种情况下this
是什么意思?我们要设置什么?那会是什么样的设置?
感谢。
答案 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设置为使用。