2014-04-05 28 views
1

如果我們右鍵單擊任何數據成員並轉到Refractor - >並單擊Create Getter Setter。 它創建Getter ByDefault作爲get + DataMemberName。但我想讓Getter成爲Qt的慣例, 例如: DataMember carName ByDefault QtCretor將創建 - > getCarName() 但我想 - > CarName()。我們如何才能讓我們的Qt創建者自定義Getter?

難道是可以通過改變一些造物主設置或者一些別的東西..

+2

爲了公平起見, 「carName()」 將是Qt'ish,而不是 「CarNameI()」。 – lpapp

回答

0

一個非常簡單的辦法是從源代碼編譯QtCreator和更改命名規則文件 /plugins/cppeditor/cppquickfixes.cpp 。搜索類GenerateGetterSetterOperation。在構造函數中,變量名稱m_ge​​tterNamem_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()); 

老實說,我沒有檢查的正確性。

編輯:海德是絕對正確的。我沒有檢查由於時間限制而深入引用的機制,但在幾分鐘前嘗試過,並檢查了來源。

1

看着多米尼克的答覆中提到/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?

相關問題