Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. French
  4. ListView & dirmodel :: expand RootPath
QtWS25 Last Chance

ListView & dirmodel :: expand RootPath

Scheduled Pinned Locked Moved Solved French
9 Posts 2 Posters 1.0k Views
  • 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.
  • A Offline
    A Offline
    An other french
    wrote on last edited by An other french
    #1

    Bonjour,
    J'ai une listview sur QFileSystemModel.
    Problème, lors de la création de l'objet, le répertoire de travail ne se déploie pas comme je voudrais.
    Du coups, un p'tit bouton pour ouvrir l'arborescence au Qstring sPath.

    void MainWindow::on_pushButton_5_clicked()
    {
        QString sPath = "D:/Temp/";
        ui->treeView->expand(dirmodel->index(sPath));
    }
    

    Avec un lecteur (c:\ ou encore f:\ …), l'arbre se déploie bien. Mais avec un répertoire, rien, nada, niet "peau de balle " …

    Mais question, expand, ne fonctionnerait il pas qu'avec les nœuds suivants ?
    Du coups, ne faudrait il pas boucler sur les répertoires ou l'instrument divin existe dans le grimoire secret de QT ?
    Dans le topic de FlaMMe du 29 Aug, on a :

    void DialogFile::setCurrentDirectory(QString currentDirectory){
        ui->listView_Fichier->setRootIndex(fileModel->setRootPath(currentDirectory));
        ui->treeView_Lecteur->expand(dirModel->index(currentDirectory));
        ui->lineEdit_Path->setText(currentDirectory);}
    

    Ce qui indiquerai la bonne marche de la procédure expand …
    Je patauge et la mare n est pas profonde …

    Une idée cher érudit ?!!

    1 Reply Last reply
    0
    • A Offline
      A Offline
      An other french
      wrote on last edited by An other french
      #2

      Visiblement, c'est une boucle.

      void MainWindow::on_pushButton_5_clicked()
      {
          QString sPath = "D:/tmp/tmp1/tmp2";
          ui->listView->setRootIndex(filemodel->setRootPath(sPath));
      QString tmp2="";
      foreach(const QString tmp, sPath.split("/")){
              tmp2 +=tmp+"/";
              ui->treeView->expand(dirmodel->index(tmp2));
              ui->textEdit->append("foreach :"+ tmp2);
      }
      }
      

      Ho, grimoire, grimoire chéri, je n'ai pas encore trouver la recette pour transformer le Pb en Or…

      1 Reply Last reply
      0
      • A Offline
        A Offline
        An other french
        wrote on last edited by An other french
        #3

        N'empêche que je n'arrive pas à griser le premier élément de la liste de fichier à la création ...

            filemodel->setFilter(QDir::NoDotAndDotDot | QDir::Files );
            filemodel->setRootPath(sPath);
            ui->listView->setModel(filemodel);
            ui->listView->setRootIndex(filemodel->setRootPath(sPath));
        

        testé:

        ui->listView->setFocus();
        ui->listView->setCurrentIndex(filemodel->index(sPath));
        

        Ok sPath n'est pas logique …

        ui->listView->setCurrentIndex(filemodel->index(1,0));
        

        Visiblement la liste est un sous élément (vu le comportement de dirmodel …)

        pas nouveau comme problème

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Bonsoir,

          QFileSystemModel est asynchrone, il faut se servir du signal directoryLoaded afin d'effectuer les opérations suivantes une fois le répertorie chargé par le modèle.

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          A 1 Reply Last reply
          0
          • SGaistS SGaist

            Bonsoir,

            QFileSystemModel est asynchrone, il faut se servir du signal directoryLoaded afin d'effectuer les opérations suivantes une fois le répertorie chargé par le modèle.

            A Offline
            A Offline
            An other french
            wrote on last edited by An other french
            #5

            Bonjour,
            Un truc du genre ?!!

            QObject::connect(ui->listView,         QFileSystemModel::directoryLoaded(sPath),      [=] () {
                          ui->listView->setCurrentIndex(idx);        }        );
                                    Semantic Issue **Call to non-static function without on object argument**
            

            Je cherche . Voilà plus de warning ...

                QModelIndex idx = filemodel->setRootPath(sPath);
                connect(filemodel,& QFileSystemModel::directoryLoaded,[&] () {
                    ui->listView->setCurrentIndex(idx);
                });
            

            Non, pas de premier élément sélectionné...

            A 1 Reply Last reply
            0
            • A An other french

              Bonjour,
              Un truc du genre ?!!

              QObject::connect(ui->listView,         QFileSystemModel::directoryLoaded(sPath),      [=] () {
                            ui->listView->setCurrentIndex(idx);        }        );
                                      Semantic Issue **Call to non-static function without on object argument**
              

              Je cherche . Voilà plus de warning ...

                  QModelIndex idx = filemodel->setRootPath(sPath);
                  connect(filemodel,& QFileSystemModel::directoryLoaded,[&] () {
                      ui->listView->setCurrentIndex(idx);
                  });
              

              Non, pas de premier élément sélectionné...

              A Offline
              A Offline
              An other french
              wrote on last edited by
              #6

              autre question; dans la function suivante, la fonction count ne renvoie pas le résultat escompté .

              oid MainWindow::on_pushButton_6_clicked()  //select all
              {
                  QModelIndexList  list;
                  ui->listView->selectAll();
                  list = ui->listView->selectionModel()->selectedIndexes();
                  ui->textEdit->append("<b>Count List  :</b>" + QString(list.count()));
                  for(QModelIndexList::iterator it = list.begin();it != list.end();it++){
                  if( (*it).column() == 0 ) ui->textEdit->append(filemodel->fileInfo((*it)).absoluteFilePath());
                  }
              
              }
              
              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #7

                Quel est le résultat escompté ?
                Quel est le résultat obtenu ?

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                A 1 Reply Last reply
                0
                • SGaistS SGaist

                  Quel est le résultat escompté ?
                  Quel est le résultat obtenu ?

                  A Offline
                  A Offline
                  An other french
                  wrote on last edited by An other french
                  #8

                  Ta question est fondée. En fait, cela est plus un effet esthétique qu'une variable de programmation.
                  Le Signal a pour but de sélectionner, marquer un élément dans le fileView filtré avec les arguments QDir::NoDotAndDotDot | QDir::Files. L'objectif de programmation était d'accéder à un Indice du model Et donc de tester les slots cliquer sans avoir à le sélectionner …
                  La variable count a plutôt un rôle de statistique. Pouvoir faire un visuel sur la progression de traitement 1/250 …

                  Le but de l'application est de convertir des fichier m4a en mp3 en ajoutant le titre et autre bidule dans les métadonnées. Je n'ai pas trouvé la commande de VLC permettant de changer des métadonnées. En regardant chez QT, il me semble que c'est possible.

                  La commande VLC est :

                  "vlc" --no-repeat --no-loop -I dummy -vvv "audio.m4a" --sout=#transcode{acodec="mp3",ab=128} :std{access="file",mux="raw",dst="J:\audio.mp3"} 
                  vlc://quit
                  

                  D'ailleurs, j'ai aussi du mal à articuler les arguments de VLC dans la function Qprocess

                  proc->start(program , arguments);
                  
                  Program : VLC
                  arguments <<  "--no-repeat --no-loop -I dummy -vvv ";
                  arguments <<  name ;
                  arguments << "--sout=#transcode{acodec=\"mp3\",ab=128,meta-title=\"" +mp3name  + "}";
                  arguments << ":std{access=\"file\",mux=\"raw\",dst=\"J:\\"+ mp3name + "\"} ";
                  arguments << "vlc://quit";
                  
                  ne pas oublier            
                  proc->waitForFinished();
                  

                  Je n'ai pas retrouvé le forum qui parle de l'utilisation et de la rédaction des commandes "shell".
                  En voilà 1 2

                  Bref, j'ai pas fini d'en parler ….

                  Apres moult correction, y a des espaces qui trainaient et

                  proc->start(program + arguments.join(' '));
                  

                  Plus qu'à trouver comment y mettre un titre pour cte autoradio …

                  Aie Problème d'écriture et de taille si fichier existe ou doublon ….

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    La liste des arguments doit contenir chaque élément des arguments séparés. La séparation concerne l'option et son argument.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved