2

すべてのグローバル変数を保持する Qt C++ プロジェクトにファイルが必要です。

次のようなもの: mainvar.h

グローバルにアクセスする必要があるファイルに含めることができます。

それらは、スタイルシートやその他のものを見つけることができる設定ファイルがある場所に定数を保持します。

現時点ではヘッダー ファイルがありますが、リンカ エラー: LNK2005 for double definition が発生します。

それから、#define と extern があります...

これに対する最も現代的なソリューションは何ですか?これにどのようにアプローチすればよいですか? 問題は、グローバル変数がいくつになるかまだわからないということです。

私はPHPから来ましたが、そこは少し異なります。あなたの助けを楽しみにしています。

編集1:

OK、コメントの後にいくつかのコードを示します。古いコードを削除したので、クラスを作成するための最初のコメントのコードが既に保持されています。

QFile settingsFile(GlobalSettings::getSettingsFileStr());
if (!settingsFile.exists())
{
    //create the settings file
    settingsFile.open(QIODevice::ReadWrite);
    settingsFile.close();
    loadSettings("://src/settings_default.ini");
}
else
{
    loadSettings("");
}

この設定ファイルでは、ユーザーがアプリケーションを閉じたときに TrayIcon が表示されるかどうかを保存しました。

後で、この設定を MainWindow クラスで使用したいと考えています。そのような:

QSettings settings(GlobalSettings::getSettingsFileStr(), QSettings::IniFormat);

if ( settings.value("general/trayIcon").toBool() )
{
    event->ignore();
    showTrayIcon();
    this->hide();
}

編集により明確さが増すことを願っています。

ごきげんよう、リチャード

4

2 に答える 2

3

あなたが望むのは次のようなものだと思います:

mainvar.cpp

QString settingsFileStr; //some initialization too probably

mainvar.h

extern Qstring settingsFileStr;

main.cpp

#include <iostream>
#include "mainvar.h"

using namespace std;

int main(){
  //do stuff with settingsFileStr
}

ただし、別のクラスに静的に設定を含めると、同じことが行われ、少し整理されます。

于 2013-08-02T00:49:07.800 に答える