這可能比Qt特定的更通用的C++編程問題。我遇到的問題是靜態成員並初始化它們。Qt C++:字體系列的靜態列表
我有一個表模型類繼承了QAbstractTableModel,我希望每個使用QFontDatabase :: families()都有一個所有系統字體系列的列表。我試圖讓這個家庭列表是靜態的,以便它只填充一次。做這個的最好方式是什麼?我無法理解如何初始化列表,因爲它是靜態的。這裏是我的意思的例子:我覺得我不應該在構造函數初始化
class Model : public QAbstractTableModel
{
public:
Model();
protected:
static QStringList fontFamilies;
}
Model::Model() : QAbstractTableModel(0)
{
fontFamilies = QFontDatabase().families();
}
(我還沒有真正嘗試上面的代碼,看看編譯器會說什麼),但我我不知道如何解決這個問題。我不認爲我能做
QStringList Model::fontFamilies = QFontDatabase().families();
謝謝,如果你能提供任何幫助!
感謝您的答覆。我遇到了一個問題 - 一切都很好編譯,但是當我嘗試運行程序時遇到段錯誤。我早些時候也遇到了同樣的問題,我認爲原因是QApplication需要在QFontDatabase初始化之前進行初始化,並且由於這是靜態的,它會導致問題。我想這是一個無關緊要的問題,但你知道這件事嗎? – buck 2011-05-04 02:42:27
關於segfault,如果你在linux上,你可以試試valgrind。它可以幫助您快速指出問題。 – Dikei 2011-05-04 03:52:26
段錯誤可能是由錯誤的靜態初始化順序造成的。 QFontDatabase可能需要一些在靜態分配時不可用的資源。 – 2011-05-04 04:10:20