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
Forum Updated to NodeBB v4.3 + New Features

QFileDialog ed estensione scelta

Scheduled Pinned Locked Moved Unsolved Italian
7 Posts 2 Posters 2.3k 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