2

私は C++ アプリケーションを作成しており、css ファイルからスタイルシートを適用する関数を作成しました。これは方法です:

void MainWindow::load_css_file() {
    QFile styleFile(":/light_style_css");
    styleFile.open(QFile::ReadOnly);

    QString styleSheet = styleFile.readAll();
    setStyleSheet(styleSheet);

};

これは問題なく動作しますが、「light_style_css」(プロジェクト リソース ファイル内の css ファイルのエイリアス) を変更するたびに「make」を実行する必要があるという事実を除きます。

しかし、メソッドを次のように変更すると、次のようになります。

void MainWindow::load_css_file() {
    QFile styleFile("../stylesheets/light_style.css");
    styleFile.open(QFile::ReadOnly);

    QString styleSheet = styleFile.readAll();
    setStyleSheet(styleSheet);

};

ファイルに変更を加えることができ、変更を行うために「make」を実行しなくてもプログラムが更新されます。

変更を行うために「make」を実行しなくても、リソース システムを使用できる方法はありますか?

これは私のリソースファイルです:

<!DOCTYPE RCC><RCC version="1.0">
 <qresource>
     <file alias="light_style_css">stylesheets/light_style.css</file>
 </qresource>
 </RCC>
4

2 に答える 2

3

簡単に言えば、いいえ、できません。

リソースは実行可能ファイルに組み込まれています。それらを変更したい場合は、実行可能ファイルを再構築する必要があります。

2番目の方法はディスクからファイルを読み取るため、その動作はありません。

これが実際の問題である場合は、コマンド ラインでスタイルシートを引数として渡し、デフォルトでリソースを使用できるようにしてください。そうすれば、毎回再コンパイルすることなく、必要なだけスタイルシートをデバッグできます。満足のいくものになったら (出荷前に!) 再構築します。

于 2013-10-03T04:00:45.653 に答える
2

私たちのプロジェクトでは、次のソリューションを実行します (会社のポリシーのため、コードを提供できません)。

  • まず、すべてのリソースをビルドして、バイナリ .rcc ファイルを分離します。必須ではありませんが、役に立ちます。
  • 次に、リリース ビルドでは、常に Qt リソース システムからリソースをロードします。
  • 第 3 に、デバッグ ビルドのみ:

    1. resourceファイルのフォルダーを確認しmain.qssます。
    2. 存在する場合: それを開き、すべて:/./resource/文字列に置き換えてから適用します。
    3. 存在しない場合: リリース バージョンと同様にリソースを読み込みます。
于 2013-10-03T08:46:20.593 に答える