• (转载)QT_BEGIN_NAMESPACE、QT_END_NAMESPACE 等问题


    (转载)http://no001.blog.51cto.com/1142339/389798

    http://www.qtcn.org/bbs/read.php?tid=14065

    #ifndef WINDOW_H
    #define WINDOW_H

    #include <QSystemTrayIcon>
    #include <QDialog>

    QT_BEGIN_NAMESPACE
    class QAction;
    class QCheckBox;
    class QComboBox;
    class QGroupBox;
    class QLabel;
    class QLineEdit;
    class QMenu;
    class QPushButton;
    class QSpinBox;
    class QTextEdit;
    QT_END_NAMESPACE

    //! [0]
    class Window : public QDialog
    {
    Q_OBJECT

    public:
    Window();
    ……



    问题:
    1、QT_BEGIN_NAMESPACE、QT_END_NAMESPACE作用是什么
    2、这样引入类有什么好处
    3、为什么这两个类要通过include引入
    #include <QSystemTrayIcon>
    #include <QDialog>

    1、It is possible to compile whole Qt inside a user-defined namespace.
    See configure options for more details. These macros expand as:

    Qt Code:
    # define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
    # define QT_END_NAMESPACE }
    参考资料:
    http://www.qtcentre.org/threads/15946-What-s-effect-of-QT_BEGIN_NAMESPACE-Thanks

    2、3
    在头文件中尽量引入较少的其它头文件,可以加快编译速度;

    要include QSystemTrayIcon是因为在
    void iconActivated(QSystemTrayIcon::ActivationReason reason);
    这个函数申明的时候需要QSystemTrayIcon类下的变量,其他的用
    class QAction;
    class QCheckBox;
    ...
    是因为在头文件里面只有这些类的指针申明,并没有真正实例化,在这个头文件对应的cpp文件里面应该会
    #include <QAction>
    #include <QCheckBox>
    ...
    在cpp文件里面才会正真实例化这些类。
    其 实直接在头文件里面#include <QAction> #include <QCheckBox>也是可以的,像它这样做,好像是可以降低各个文件编译时的关联度,不会在改动了一下部分类的时候,引发其他大量文件的 重新编译,在做小工程的时候没什么区别,但是做大了,编译一次需要好几个小时的时候,这样做的优势就显现出来了

  • 相关阅读:
    关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
    Python基础一
    windows环境下 安装python2和python3
    Python数据类型及常用操作
    Python流程控制
    Python用户交互以及数据类型
    Python介绍以及Python环境搭建
    multiprocessor(下)
    multiprocessor(中)
    multiprocess(上)
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3074179.html
Copyright © 2020-2023  润新知