如果我們右鍵單擊任何數據成員並轉到Refractor - >並單擊Create Getter Setter。 它創建Getter ByDefault作爲get + DataMemberName。但我想讓Getter成爲Qt的慣例, 例如: DataMember carName ByDefault QtCretor將創建 - > getCarName() 但我想 - > CarName()。我們如何才能讓我們的Qt創建者自定義Getter?
難道是可以通過改變一些造物主設置或者一些別的東西..
如果我們右鍵單擊任何數據成員並轉到Refractor - >並單擊Create Getter Setter。 它創建Getter ByDefault作爲get + DataMemberName。但我想讓Getter成爲Qt的慣例, 例如: DataMember carName ByDefault QtCretor將創建 - > getCarName() 但我想 - > CarName()。我們如何才能讓我們的Qt創建者自定義Getter?
難道是可以通過改變一些造物主設置或者一些別的東西..
一個非常簡單的辦法是從源代碼編譯QtCreator和更改命名規則文件 /plugins/cppeditor/cppquickfixes.cpp 。搜索類GenerateGetterSetterOperation。在構造函數中,變量名稱m_getterName和m_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());
老實說,我沒有檢查的正確性。
編輯:海德是絕對正確的。我沒有檢查由於時間限制而深入引用的機制,但在幾分鐘前嘗試過,並檢查了來源。
看着多米尼克的答覆中提到/plugins/cppeditor/cppquickfixes.cpp
後,有簡單的方法:在任一方式
QString m_carName;
QString _carName; // note: using _ to start identifier is questionable (*)
QString carName_;
然後Qt Creator中應該產生的吸氣carName
名稱您的私人數據成員。請注意,CarName
不是Qt約定,但如果您確實需要這種約定,請使用m_CarName
作爲變量名稱。
(*)查看What are the rules about using an underscore in a C++ identifier?
爲了公平起見, 「carName()」 將是Qt'ish,而不是 「CarNameI()」。 – lpapp