Array com todos os paths de um .qrc



  • Boas! Tudo bem? Primeiro post! ahaha

    Eu já ando nas andanças do Qt há algum tempo mas nunca usei muito os .qrc e esta é a primeira vez que encontro uma dificuldade sem resposta em lado nenhum!!

    Criei uma aplicação onde tenho um .qrc com várias imagens. O que eu pretendo é criar um array de um qualquer tipo com todos os paths presentes nesse .qrc.

    Existe alguma forma de eu fazer isto dinamicamente? Ou tenho mesmo que adicionar os paths um a um ao array?

    Abr.



  • O .qrc para as classes do Qt age como um diretório comum.
    Logo, você pode usar, o QDir ou o QDirIterator:

    @
    QDir dir(":");
    QStringList list = dir.entryList();
    @

    Mas o entryList() não retorna os subdiretórios.
    Mas utilizando o QDirIterator:

    @
    QStringList listSubDir;
    QDirIterator dir_it(":", QDirIterator::Subdirectories);
    while (dir_it.hasNext()) {
    listSubDir << dir_it.next();
    }
    @

    Você tem a lista do qrc inteiro.



  • Boa!!

    Não sabia nem tinha pensado no .qrc dessa forma!

    Muito obrigado!



  • também classificar por tipo... simplesmente...

    @
    /// found https://github.com/pehohlva/imq
    bool Compressor::appendDirname(const QString pwd) {
    QTextStream out(stdout);
    if (!invalidname(pwd)) {
    return false;
    }
    bool result = true;
    QDir dir(pwd);
    if (dir.exists(pwd)) {
    OsFile dirfromOS;
    dirfromOS.set_File(dir.absolutePath(), 3);
    if (writtel.device()) {
    writtel << dirfromOS;
    }
    out << "D:" << dir.absolutePath() << "\n";
    out.flush();

        Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
            if (info.isDir()) {
                result = appendDirname(info.absoluteFilePath());
            } else if (info.isSymLink()) {
                OsFile symslinkOS;
                symslinkOS.set_File&#40;info.symLinkTarget(&#41;, 2);
                symslinkOS.set_NameSimslink(info.fileName());
                if (writtel.device()) {
                    writtel << symslinkOS;
                }
    
            } else if (info.isFile&#40;&#41;) {
                result = appendFilename(info, info.absolutePath());
            }
        }
    }
    
    return result;
    

    }

    @


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.