Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Possible windows bug in "QStandardPaths"?
QtWS25 Last Chance

Possible windows bug in "QStandardPaths"?

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 5 Posters 1.1k 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.
  • B Bonnie

    @ademmler said in Possible windows bug in "QStandardPaths"?:

    QString myWorkingDir = myDesktopPath + "/" + "Jobsfolder"

    That's right!

    And how do I properly quote "Spaces" in paths than?

    Well, in most situations you don't need to do that.

    ademmlerA Offline
    ademmlerA Offline
    ademmler
    wrote on last edited by
    #6
    This post is deleted!
    1 Reply Last reply
    0
    • ademmlerA ademmler

      @Bonnie thx for response.

      Does this mean I always add a "/" - on all platforms - to paths - if I have to?

      Dummy example:
      QString myDesktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
      QString myWorkingDir = myDesktopPath + "/" + "Jobsfolder"
      ....

      And how do I properly quote "Spaces" in paths than?

      KroMignonK Offline
      KroMignonK Offline
      KroMignon
      wrote on last edited by
      #7

      @ademmler said in Possible windows bug in "QStandardPaths"?:

      Does this mean I always add a "/" - on all platforms - to paths - if I have to?
      Dummy example:
      QString myDesktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
      QString myWorkingDir = myDesktopPath + "/" + "Jobsfolder"
      ....
      And how do I properly quote "Spaces" in paths than?

      As written in QDir documentation, Qt always use internally '/' as path separator.
      There are many help functions to work with path.
      Your dummy example:

      QString myDesktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
      QString myWorkingDir = QDir(myDesktopPath).filePath("Jobsfolder");
      

      When you need to use the path for external "tools" (for example as parameter for a QProcess), you should use QDir:toNativeSeparators() so you don't have to carry about the path separator.

      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

      ademmlerA 1 Reply Last reply
      1
      • KroMignonK KroMignon

        @ademmler said in Possible windows bug in "QStandardPaths"?:

        Does this mean I always add a "/" - on all platforms - to paths - if I have to?
        Dummy example:
        QString myDesktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
        QString myWorkingDir = myDesktopPath + "/" + "Jobsfolder"
        ....
        And how do I properly quote "Spaces" in paths than?

        As written in QDir documentation, Qt always use internally '/' as path separator.
        There are many help functions to work with path.
        Your dummy example:

        QString myDesktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
        QString myWorkingDir = QDir(myDesktopPath).filePath("Jobsfolder");
        

        When you need to use the path for external "tools" (for example as parameter for a QProcess), you should use QDir:toNativeSeparators() so you don't have to carry about the path separator.

        ademmlerA Offline
        ademmlerA Offline
        ademmler
        wrote on last edited by
        #8

        @KroMignon Thx for the perfect response I got it

        1 Reply Last reply
        0
        • ademmlerA Offline
          ademmlerA Offline
          ademmler
          wrote on last edited by
          #9

          @KroMignon said in Possible windows bug in "QStandardPaths"?:

          QDir(myDesktopPath).filePath("Jobsfolder");

          Last question about all this:

          On Mac OS X app resources are in the bundle package "Resources" folder.
          I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than.

          JonBJ KroMignonK J.HilkJ 3 Replies Last reply
          0
          • ademmlerA ademmler

            @KroMignon said in Possible windows bug in "QStandardPaths"?:

            QDir(myDesktopPath).filePath("Jobsfolder");

            Last question about all this:

            On Mac OS X app resources are in the bundle package "Resources" folder.
            I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than.

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by JonB
            #10

            @ademmler said in Possible windows bug in "QStandardPaths"?:

            QDir(QApplication::applicationDirPath()).filePath("../Resources")

            Be careful. I don't know anything about Mac or " in the bundle package "Resources" folder.". Is Resources a real, physical sub-directory located (one directory above?) your application directory, or is it purely an internal reference to the resources embedded in the executable?

            ademmlerA 1 Reply Last reply
            0
            • ademmlerA ademmler

              @KroMignon said in Possible windows bug in "QStandardPaths"?:

              QDir(myDesktopPath).filePath("Jobsfolder");

              Last question about all this:

              On Mac OS X app resources are in the bundle package "Resources" folder.
              I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than.

              KroMignonK Offline
              KroMignonK Offline
              KroMignon
              wrote on last edited by KroMignon
              #11

              @ademmler said in Possible windows bug in "QStandardPaths"?:

              I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than

              I would do it like this:

              QDir resourcesPath(QApplication::applicationDirPath());
              resourcesPath.cd("../Resources");
              
              // now you can use resourcesPath to get files from your resources directory.
              

              It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

              ademmlerA 1 Reply Last reply
              1
              • KroMignonK KroMignon

                @ademmler said in Possible windows bug in "QStandardPaths"?:

                I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than

                I would do it like this:

                QDir resourcesPath(QApplication::applicationDirPath());
                resourcesPath.cd("../Resources");
                
                // now you can use resourcesPath to get files from your resources directory.
                
                ademmlerA Offline
                ademmlerA Offline
                ademmler
                wrote on last edited by
                #12

                @KroMignon thx again for this perfect answer

                1 Reply Last reply
                0
                • ademmlerA ademmler

                  @KroMignon said in Possible windows bug in "QStandardPaths"?:

                  QDir(myDesktopPath).filePath("Jobsfolder");

                  Last question about all this:

                  On Mac OS X app resources are in the bundle package "Resources" folder.
                  I would do QDir(QApplication::applicationDirPath()).filePath("../Resources"); than.

                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by J.Hilk
                  #13

                  @ademmler

                  Ihm using this to get the appbundle path on Mac OS and the executable path on the other platforms

                  static const QString &ApplicationFolder (){
                  #ifdef Q_OS_MACOS
                          auto getStringPath = []()->QString{
                                  CFURLRef url =(CFURLRef)CFAutorelease((CFURLRef)CFBundleCopyBundleURL(CFBundleGetMainBundle()));
                                  QDir d(QUrl::fromCFURL(url).path());
                                  d.cdUp();
                                  return  d.absolutePath();
                          };
                          static const QString path = getStringPath();
                  #else
                          static const QString path = QCoreApplication::applicationDirPath();
                  #endif
                          return  path;
                      }
                  

                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  ademmlerA 1 Reply Last reply
                  0
                  • JonBJ JonB

                    @ademmler said in Possible windows bug in "QStandardPaths"?:

                    QDir(QApplication::applicationDirPath()).filePath("../Resources")

                    Be careful. I don't know anything about Mac or " in the bundle package "Resources" folder.". Is Resources a real, physical sub-directory located (one directory above?) your application directory, or is it purely an internal reference to the resources embedded in the executable?

                    ademmlerA Offline
                    ademmlerA Offline
                    ademmler
                    wrote on last edited by
                    #14

                    @JonB

                    It is a real physical folder and may other things - defined by apple
                    Qt says: https://doc.qt.io/qt-5/macos-deployment.html

                    1 Reply Last reply
                    1
                    • J.HilkJ J.Hilk

                      @ademmler

                      Ihm using this to get the appbundle path on Mac OS and the executable path on the other platforms

                      static const QString &ApplicationFolder (){
                      #ifdef Q_OS_MACOS
                              auto getStringPath = []()->QString{
                                      CFURLRef url =(CFURLRef)CFAutorelease((CFURLRef)CFBundleCopyBundleURL(CFBundleGetMainBundle()));
                                      QDir d(QUrl::fromCFURL(url).path());
                                      d.cdUp();
                                      return  d.absolutePath();
                              };
                              static const QString path = getStringPath();
                      #else
                              static const QString path = QCoreApplication::applicationDirPath();
                      #endif
                              return  path;
                          }
                      
                      ademmlerA Offline
                      ademmlerA Offline
                      ademmler
                      wrote on last edited by
                      #15

                      @J-Hilk thx for your suggestion.

                      I tried this way - because it is platform independent. On top using a QDir objects is giving lots of other handy functionality like .exists(); .remove(); .removeRecursively() and others.

                      QDir resourcesPath = QDir(QApplication::applicationDirPath());
                      #if defined Q_OS_MACX    
                          resourcesPath.cd("../Resources");
                      #else
                          resourcesPath.cd("resources");
                      #endif
                      
                      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