2

Qt アプリケーション全体の書式設定のために CSS ファイルを読み込もうとしています。現在、ビルドしたexeファイルと同じフォルダーに「stylesheet.css」ファイルがあります(デバッグとリリースの両方)。ただし、プログラムを実行してもエラーは発生せず、単に「test:」が出力されるため、明らかにファイルが見つからないか、正しく読み取れていないのでしょうか?

それがばかげた間違いなら許してください-私はQtとC ++の両方にかなり慣れていません。

#include "mainwindow.h"
#include "qfile.h"
#include "qtextstream.h"
#include <QApplication>
#include <iostream>

int main(int argc, char *argv[])
{
    QApplication program(argc, argv);

    QFile styleFile("stylesheet.css");
    styleFile.open(QIODevice::ReadOnly);
    QTextStream textStream(&styleFile);
    QString styleSheet = textStream.readAll();
    styleFile.close();
    program.setStyleSheet(styleSheet);

    std::cout << "test: " << styleSheet.toStdString() << std::endl;

    MainWindow w;
    w.showMaximized();

    return program.exec();
}
4

4 に答える 4

4

もう少し掘り下げてみると、QRC ファイルが不足していたことがわかりました (存在すら知らなかった)。そこで、リソース (QRC) ファイルを作成し、プレフィックス "/style" を追加してから、スタイルシートをそのプレフィックスに追加しました。今では問題なく動作します。また、ある時点で .css を .qss に変更しました (違いがあるとは思えませんが、言及する必要があると思いました)。

最終的なコードは次のとおりです。

#include "mainwindow.h"
#include "qfile.h"
#include "qtextstream.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication program(argc, argv);

    QFile styleFile(":/style/stylesheet.qss");
    if(styleFile.open(QIODevice::ReadOnly))
    {
        QTextStream textStream(&styleFile);
        QString styleSheet = textStream.readAll();
        styleFile.close();
        program.setStyleSheet(styleSheet);
    }

    MainWindow w;
    w.showMaximized();

    return program.exec();
}
于 2013-09-05T16:42:05.593 に答える
0

この CSS ファイルをアプリケーションにデプロイする場合は、 Qt リソース ファイルのサポートを探しています。

于 2013-09-05T13:26:29.737 に答える
0

変化する

QFile styleFile("stylesheet.css");

QFile styleFile("C:/path/to/stylesheet.css");

プログラムがファイルを見つけるには、完全なファイル パスを渡す必要があります。その名前だけを指定してディレクトリを指定しない場合、プログラムは現在のディレクトリ (必ずしも exe ファイルのディレクトリと限りません) でのみ検索し、そこにない場合は検索しません。

于 2013-09-05T07:40:28.697 に答える