【问题标题】:How can we make our Customize Getter from Qt creator?我们如何从 Qt 创建者中制作自定义 Getter?
【发布时间】:2014-04-05 10:55:39
【问题描述】:

如果我们右键单击任何数据成员并转到 Refractor -> 并单击 Create Getter Setter。 它将 Getter ByDefault 创建为 get+DataMemberName。但我想让 Getter 成为 Qt 的约定, 例子 : 对于 DataMember carName ByDefault QtCretor 将创建 -> getCarName() 但我想要 -> CarName()。

是否可以通过更改某些创建者设置或其他东西来实现..

【问题讨论】:

  • 公平地说,“carName()”将是 Qt'ish,而不是“CarNameI()”。

标签: qt qt-creator getter getter-setter


【解决方案1】:

看了Dominik的回答中提到的/plugins/cppeditor/cppquickfixes.cpp后,有一个简单的方法:

以任何这些方式命名您的私人数据成员

QString m_carName;
QString _carName; // note: using _ to start identifier is questionable (*)
QString carName_;

然后 Qt Creator 应该生成 getter carName。请注意,CarName 不是 Qt 约定,但如果您确实需要,请使用 m_CarName 作为变量名。

(*) 见What are the rules about using an underscore in a C++ identifier?

【讨论】:

    【解决方案2】:

    一个非常简单的选择是从源代码编译 QtCreator 并更改文件中的命名规则 /plugins/cpeditor/cppquickfixes.cpp。搜索类 GenerateGetterSetterOperation。在构造函数中,变量名称 m_getterNamem_setterName 在这里定义。

    您要查找的代码是:

    m_getterName = m_baseName != m_variableString
            ? QString::fromLatin1("%1").arg(m_baseName)
            : QString::fromLatin1("get%1%2")
                .arg(m_baseName.left(1).toUpper()).arg(m_baseName.mid(1));
    m_setterName = QString::fromLatin1("set%1%2")
            .arg(m_baseName.left(1).toUpper()).arg(m_baseName.mid(1));
    

    您必须将第一部分更改为:

     m_getterName = m_baseName != m_variableString
            ? QString::fromLatin1("%1").arg(m_baseName)
            : QString::fromLatin1("%1%2")
                .arg(m_baseName.left(1).toLower()).arg(m_baseName.mid(1).toUpper());
    

    老实说,我没有检查正确性。

    编辑:海德是绝对正确的。由于时间限制,我没有检查我深入引用的机制,但几分钟前尝试过并检查了来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多