zoukankan      html  css  js  c++  java
  • (转载)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>也是可以的,像它这样做,好像是可以降低各个文件编译时的关联度,不会在改动了一下部分类的时候,引发其他大量文件的 重新编译,在做小工程的时候没什么区别,但是做大了,编译一次需要好几个小时的时候,这样做的优势就显现出来了

  • 相关阅读:
    获取CheckBoxList当前选择项索引
    IE游览器与CMYK模式的JPEG格式图片不兼容
    jquery listbox左右移动 并且取值
    JS保留2位小数
    list.Contain 与 list.FindIndex()用法记录
    CSS 手型显示样式
    分页存储过程
    C#将datatable生成easyui的绑定tree 的json数据格式
    URL编码方法的比较
    UNIX I/O with TCP/IP
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3074179.html
Copyright © 2011-2022 走看看