Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Solved Using qrc/qss files with Qt WASM

    Qt for WebAssembly
    2
    3
    336
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      LorenzE last edited by

      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

      1 Reply Last reply Reply Quote 0
      • lorn.potter
        lorn.potter last edited by

        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.

        Freelance Software Engineer, Platform Maintainer QtWebAssembly, Maintainer QtSensors
        Author, Hands-On Mobile and Embedded Development with Qt 5 http://bit.ly/HandsOnMobileEmbedded

        1 Reply Last reply Reply Quote 0
        • L
          LorenzE last edited by LorenzE

          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());
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post