Qt-有关头文件的一些问题

问题描述

| 我对ѭ0书中的此头文件有一些疑问:
#ifndef GOTOCELLDIALOG_H //Check if GOTOCELLDIALOG_H has not been defined prevIoUsly
#define GOTOCELLDIALOG_H
#include <QDialog>
#include \"ui_gotocelldialog.h\"

class GoToCellDialog: public QDialog,public Ui::GoToCellDialog {
    Q_OBJECT
    public: GoToCellDialog(QWidget * parent = 0);
    private slots: void on_lineEdit_textChanged();
};

#endif
1-我知道ѭ2的意思。但是,它在这里有什么用?我的意思是,为什么我们要尝试对文件文件进行“ 2”设置? 2-由于我继承了
QDialog
Ui::GoToCellDialog
,为什么我们还要
#include
? 3-什么是
Q_OBJECT
?为什么不以分号结尾? 4-这个构造函数
GoToCellDialog(QWidget *parent = 0);
试图告诉我们什么? 非常感谢。     

解决方法

1)这称为标题保护。它反复包含了该头等幂,即
#include \"gotocelldialog.h\"
#include \"gotocelldialog.h\"
与...相同
#include \"gotocelldialog.h\"
这看起来可能很奇怪。实际上,这是间接发生的。只要看看\ qobject.h \被包含在一个文件中的频率即可。 2)您只能使用之前已经定义的类型。
#include
带有您需要的声明。 3)ѭ7是Qt系统的一部分。这是一个宏,它定义了您班上的一些标准成员。这些成员支持信号/插槽等功能。 4)Qt小部件可能有也可能没有父母。如果他们没有父母,那么他们就是独立的窗口。如果他们确实有父母,则它们将成为父窗口的一部分,并随父窗口被销毁。
(QWidget *parent = 0)
参数列表是C ++表示默认参数的方式。如果您没有为父级传递显式值,则该值为0(
NULL
)。这代表“没有父母”。因此,可以通过两种方式创建无父母的
GoToCellDialog
:either16ѭ或
new GoToCellDialog
。     ,1)这是防止多个相同类型声明的模式。 2)如果头文件使用类型,则需要#include类型定义或进行前向声明。 3)Q_OBJECT是qt \的moc工具将用来扩展类声明以包括QObject特定声明的宏。 4)每个图形小部件都具有父/子关系。然后,默认构造函数将通过将父代作为参数传递,从而将新的窗口小部件关联到其父代。     ,如果尚未事先定义包含保护,则此处使用“ 2”。第一个“ 19”检查该包含保护是否已在某处定义,如果尚未定义,则将在第二行中使用“ 2”对其进行定义。 这篇文章的“包括”防护:   在C和C ++编程语言中,使用#include防护,   有时称为宏观卫队   用于避免   双重包容问题   处理#include指令。 您包括了它们,因此链接器知道在哪里可以找到它的定义。 是一个宏... 该构造函数告诉您它使用QWidget指针,并且该参数默认为NULL,因此您可以使用ctor而不传递此参数。但是,这意味着您不应该在类中使用此参数,因为使用NULL指针是未定义行为。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...