Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. QFileDialog ed estensione scelta
Qt 6.11 is out! See what's new in the release blog

QFileDialog ed estensione scelta

Scheduled Pinned Locked Moved Unsolved Italian
7 Posts 2 Posters 3.1k Views 1 Watching
  • 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.
  • F Offline
    F Offline
    fermatqt
    wrote on last edited by
    #1

    ciao!

    sto cercando di usare un QFileDialog per salvare un file.
    solo che con questo codice ottengo il nome del file senza estensione:

        QString filters = "CSV(*.csv);;All files (*.*)";
        QString defaultFilter = "CSV(*.csv);";
        QString fileName = QFileDialog::getSaveFileName(0, QObject::tr("Salva"), QDir::homePath(), filters, &defaultFilter);
        if (!fileName.isNull()) {
            qDebug() << fileName;
        }
    

    è normale??
    dove sbaglio??

    1 Reply Last reply
    0
    • F Offline
      F Offline
      fermatqt
      wrote on last edited by
      #2

      ho provato anche questo codice:

          QStringList filters;
          filters << "CSV (*.csv)" << "All files (*.*)";
          QFileDialog fd(0, tr("Salva"), QDir::homePath());
          fd.setAcceptMode(QFileDialog::AcceptSave);
          fd.setNameFilters(filters);
          if (fd.exec() == QDialog::Accepted) {
              QString selectedFilter = fd.selectedNameFilter();
              QString fileName = fd.selectedFiles()[0];
              qDebug() << selectedFilter << " " << fileName;
          }
      

      il risultato è questo:

      "CSV (*.csv)"   "/home/matte/lkjhkòljhkjlh"
      

      in sostanza manca l'estensione nel nome dile file.
      se lo andassi a salvare, lo salverei sbagliato.

      1 Reply Last reply
      0
      • VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #3

        molto strano, a me questo codice

        #include <QFileDialog>
        #include <QApplication>
        #include <QDebug>
            int main(int argc, char *argv[])
            {
                QApplication app(argc,argv);
                QString filters = "CSV(*.csv);;All files (*.*)";
                    QString defaultFilter = "CSV(*.csv);";
                    QString fileName = QFileDialog::getSaveFileName(0, QObject::tr("Salva"), QDir::homePath(), filters, &defaultFilter);
                    if (!fileName.isNull()) {
                        qDebug() << fileName;
                    }
                    return app.exec();
            }
        

        stampa "C:/temp/bhabvba.csv"

        che versione di Qt usi?

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        0
        • F Offline
          F Offline
          fermatqt
          wrote on last edited by
          #4

          ciao!

          al momento ho la 5.7.1.
          qtcreator alla versione 4.2.0.

          1 Reply Last reply
          0
          • VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by VRonin
            #5

            Molto strano. Io ho provato Qt 5.8 e Qt 5.5.1 e entrambi funzionano.
            Io sono sotto widows, tu?

            P.S.
            QString defaultFilter = "CSV(*.csv);"; dovrebbe essere QString defaultFilter = "CSV(*.csv)"; ma non credo sia la causa del problema

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            1 Reply Last reply
            0
            • F Offline
              F Offline
              fermatqt
              wrote on last edited by
              #6

              ciao!

              allora, sto continuando a fare varie prove.
              questo mette l'estensione, ma se poi scelgo XLS, sempre csv mette:

                  QString fileName;
                  QStringList filters;
                  filters << "CSV(*.csv)" << "XLS(*.xls)" << "All files(*.*)";
                  QFileDialog fd(0, QObject::tr("Salva"), QDir::homePath());
                  fd.setAcceptMode(QFileDialog::AcceptSave);
                  fd.setNameFilters(filters);
                  fd.setDefaultSuffix(".csv");
                  if (fd.exec() == QDialog::Accepted) {
                      fileName = fd.selectedFiles()[0];
                  }
                  qDebug() << fileName;
              

              questo invece, facendo la modifica che mi hai detto, continua a non prendere l'estensione:

                  QString filters = "CSV(*.csv);;All files (*.*)";
                  QString defaultFilter = "CSV(*.csv)";
                  QString fileName = QFileDialog::getSaveFileName(0, QObject::tr("Salva"), QDir::homePath(), filters, &defaultFilter);
                  if (!fileName.isNull()) {
                      qDebug() << fileName;
                  }
              

              come OS, uso linux.
              potrebbe essere un bug??

              1 Reply Last reply
              0
              • F Offline
                F Offline
                fermatqt
                wrote on last edited by
                #7

                al momento l'unica soluzione che ho trovato è questa:

                    QString fileName;
                    QStringList filters;
                    filters << "CSV(*.csv)" << "XLS(*.xls)" << "All files(*.*)";
                    QFileDialog fd(0, QObject::tr("Salva"), QDir::homePath());
                    fd.setAcceptMode(QFileDialog::AcceptSave);
                    fd.setNameFilters(filters);
                    if (fd.exec() == QDialog::Accepted) {
                        fileName = fd.selectedFiles()[0];
                        if (fd.selectedNameFilter() == "CSV(*.csv)") {
                            fileName.append(".csv");
                        } else if (fd.selectedNameFilter() == "XLS(*.xls)") {
                            fileName.append(".xls");
                        }
                    }
                    return fileName;
                

                non è "bella", lo so.
                ma sennò non c'è verso di fargli prendere l'estensione.
                ho guardato in lungo e in largo, e pare che sia un problema su OS linux.

                1 Reply Last reply
                1

                • Login

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