2

私がやろうとしていることは、スタイルファイル(qssファイル)を読み取って新しいスタイルを追加することが難しいため、大きなスタイルファイルを小さなスタイルファイルに分割する必要があります。その後、それらすべてを適用するためにそれらの小さなqssファイルをロードする必要があります

作成したメインで関数を呼び出してBigファイルをロードしています

void Utilities::loadEnglishStyle()
{
    QFile file(":/EnglishClasses.qss");
    file.open(QFile::ReadOnly);
    QString StyleSheet = QLatin1String(file.readAll());
    qApp->setStyleSheet(StyleSheet);
    file.close();
}

大きなファイルを分割し、小さなファイルをリソースに追加し、それらをすべて開いてから、QFileそれらをすべて1つの文字列に連結することを考えましたが、新しいqssファイルを追加するたびに、同じプロセスを再度実行する必要があります

これを行うための効率的な方法はありますか?!!

4

2 に答える 2

2

あなたのアプローチは正しいように聞こえます。プロセスは思ったほど複雑ではありません。必要なのは、リソース内の特定のプレフィックス(例stylesheets)の下に「小さい」qssファイルを追加してから、これらすべてのファイルを自動的にロードして連結することだけです。サンプルコードは次のとおりです。

QDir stylesheetsDir(":/stylesheets");
QFileInfoList entries = stylesheetsDir.entryInfoList();
QString completeStylesheet = "";
foreach (QFileInfo fileInfo, entries)
{
    QFile file(":/stylesheets/" + fileInfo.fileName(););
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
       continue;

    QTextStream in(&file);
    completeStylesheet += in.readAll()
}
于 2013-01-09T09:53:50.823 に答える
0

これは、APIが次のように追加する必要があることを意味します。

QWidget::addStyleSheet(StyleSheet);
QWidget::clearStyleSheet(StyleSheet);
于 2013-01-10T03:11:12.483 に答える