Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Using qrc/qss files with Qt WASM



  • Hi all,

    I have a question regarding Qt WASM. I would like to change between different style sheets during run time in a WASM application. In the desktop version of my application I just use QFile to access the .qss file included in my .qrc file.

    if(QApplication *pApp = qobject_cast<QApplication *>(QApplication::instance())) {
      QFile file;
      file.setFileName(":/styles/dark.qss");
      file.open(QFile::ReadOnly | QFile::Text);
      QTextStream stream(&file);
      pApp->setStyleSheet(stream.readAll());
    }
    

    However, under Qt WASM QFile is not supported. Instead one can use QFileDialog::getOpenFileContent to read the complete data as a QByteArray. But this prompts me with a QFileDialog first, which I do not want/need. My question: Is there a way to read from a file included in a .qrc file directly into a QByteArray? I had a look at QResource, but it seems that this class can only be used to read from an external qrc/rcc file during runtime. Any ideas?

    Thanks,

    Lorenz



  • QFile is supported in webassembly, just not QFileDialog.
    using qrc files will also work, but it seems to have issues with paths more than one deep, so using an alias for them will definitely work.



  • Thanks! The following code, using QFile and a top level path, did indeed work:

    QFile file(":/dark.qss");
    file.open(QFile::ReadOnly);
    QTextStream stream(&file);
    pApp->setStyleSheet(stream.readAll());
    

Log in to reply