代码之家  ›  专栏  ›  技术社区  ›  yesraaj

Qt命名类的方法背后的基本原理是什么?

  •  6
  • yesraaj  · 技术社区  · 15 年前

    我想知道为什么qt在每个类名之前使用q,而不是将所有内容放在名称空间中。有没有什么特别的原因,比如让名字更容易搜索,或者仅仅是关于品牌的名字?

    6 回复  |  直到 15 年前
        1
  •  7
  •   Rafał Dowgird    15 年前

    我相信这是历史性的。命名空间在C++中被引入到1995左右。Qt开发始于1991年,因此显然无法使用名称空间。

        2
  •  3
  •   Glen    15 年前

    这可能是一个可移植性问题。每个编译器都不支持/不支持名称空间,因此命名约定有助于减少命名冲突。

        3
  •  2
  •   Caleb Huitt - cjhuitt    15 年前

    Qt的文档参考 namespaces ,虽然我没有检查代码,看看它们是否是真正的C++。 namespace 或在类中使用公开声明的黑客。我猜其他人试图避免让每个人都需要重命名所有东西,尽管他们可以提供一个迁移路径,如果他们愿意的话,比如:

    namespace Qt
    {
    class Object { ... };
    }
    
    #ifndef NO_OLD_DECLS
    typedef Qt::Object QObject;
    #endif
    
        4
  •  2
  •   Paul Dixon    15 年前

    Qt对它所使用的C++语言特性非常保守。没有命名空间, exceptions or RTTI . 也见 this article 详细说明为什么在信号/插槽处理中不使用模板。

        5
  •  0
  •   Marc Mutz - mmutz    15 年前

    由于没有一个单独的C++编译器没有实现命名空间,现在只有一个原因:品牌化:

        6
  •  0
  •   Fred    15 年前

    qt使用q前缀作为其编码样式的一部分。它通常是为了使代码更容易阅读和识别什么是什么。

    标识符:

    • 前缀为“q”,后缀为“private”是用于实现细节的私有类,不是API的一部分(例如qpainterprivate)
    • 前缀为“Q”和 后缀为“private”的是公共类(例如qwidget)
    • 前缀为“q”(小写)是公共全局函数(例如qrgb)

    采用一种编码风格,并统一使用它,使其他人更容易理解他们没有编写的代码。

    裁判。: Qt Coding Style