Qt 应用程序有意外的 QDir::currentPath

     2023-02-22     7

关键词:

【中文标题】Qt 应用程序有意外的 QDir::currentPath【英文标题】:Qt application has unexpected QDir::currentPath 【发布时间】:2018-08-07 08:57:44 【问题描述】:

我在我的 Qt 应用程序中使用QSettings 来存储首选项,一切都很好,直到我开始在 Linux mint 19 上运行它。设置文件的默认位置是应用程序文件夹,但现在它是在用户主文件夹中创建的。

QDir::currentPath() 如果我通过双击运行应用程序,则返回主文件夹,如果我从终端运行它,则返回正确的可执行位置。我以前从未见过这种情况。也许有人知道如何修复它并通过双击它自己的文件夹来运行应用程序。

【问题讨论】:

【参考方案1】:

不要依赖当前的工作目录(由QDir::currentPath() 返回),因为它基本上可以是任何东西。看起来您的桌面环境的文件管理器在您通过双击运行软件时将当前目录设置为主文件夹,这通常是明智的,因为这通常是用户在从应用程序等打开文件时想要的。

如果我正确阅读了您想要的内容,即存储设置的应用程序文件夹的路径,您需要QCoreApplication::applicationDirPath()。但请注意,这样做会强制您将应用程序安装到用户主文件夹(因为您不能写入像 /user/local/bin 这样的系统文件夹,并且您不应该通过更改权限)。

基于 cmets,似乎QCoreApplication::applicationDirPath() 给出了错误的目录,但QCoreApplication::applicationFilePath() 给出了正确的路径。如果确实如此,请获取文件路径,并从中删除可执行文件。但是,看看the Qt source,这应该是不可能的,因为applicationDirPath() 已经这样做了……


我建议您改用 QSettings 作为documented in its basic usage。

【讨论】:

如果我从文件管理器中双击运行应用程序 QCoreApplication::applicationDirPath() 返回用户主路径。而且我找不到任何关于 Nemo 文件管理器默认运行文件夹设置的信息... QCoreApplication::applicationFilePath() 返回什么? QCoreApplication::applicationFilePath() 提供正确的文件位置。我会将这种方式用作一些技巧,但应该对当前行为进行一些解释。 如果 QApplicationDirPath 和 QApplicationFilePath 给出不同的目录,这听起来像一个 Qt 错误。有趣的案例。 @kess 在 Qt 源中快速检查(编辑答案中的链接)似乎表明 applicationDirPath 使用 applicationFilePath,所以如果他们为您提供不同的路径似乎真的很奇怪......一定是其他有趣的事情开!

在 Xcode 中自动调整标签行的大小有意外的结果

】在Xcode中自动调整标签行的大小有意外的结果【英文标题】:AutoresizingrowoflabelsinXcodehasunexpectedresults【发布时间】:2018-03-2421:39:37【问题描述】:我在为一行标签的布局使用自动调整大小时遇到​​问题。见下图。我希望第一... 查看详情

未捕获的 SyntaxError:我的提取标头中有意外的标识符

】未捕获的SyntaxError:我的提取标头中有意外的标识符【英文标题】:UncaughtSyntaxError:Unexpectedidentifieratmyfetchheaders【发布时间】:2021-08-0518:22:22【问题描述】:我尝试运行服务器并且它运行但我的chrome控制台在标题处识别错误并... 查看详情

带有 iOS 7 的 Xcode 5 中的 NSInternalInconsistencyException:“故事板:容器视图中有意外的子视图。”

...ode5中的NSInternalInconsistencyException:“故事板:容器视图中有意外的子视图。”【英文标题】:NSInternalInconsistencyExceptioninXcode5withiOS7:\'StoryBoard:Thereareunexpectedsubviewsinthecontainerview.\'【发布时间】:2013-11-1711:54:41【问题描述】:我刚... 查看详情

qt如何获取窗口外的鼠标点击事件,或者鼠标坐标

本窗口内的鼠标事件都好说,窗体外的鼠标点击事件,或者鼠标的实时坐标,怎么获得呢?voidmousePressEvent(QMouseEvent*event);这是鼠标单机事件函数要在.h里面声明只要发生鼠标事件都会触发这个函数void mousePressEvent(QMouseEvent ... 查看详情

Windeployqt 部署除 exe 文件外的所有内容

...】:2018-05-1518:52:59【问题描述】:我正在尝试使用部署QML应用程序C:\\Qt59\\5.10.1\\msvc2015_64\\bin\\windeployqt.exe--dire:\\deptest--qmldire:\\aise:\\build-ais-Deskt 查看详情

Qt QFile::size() 总是返回 0

...布时间】:2018-06-0317:46:18【问题描述】:我正在编写一个应用程序,我多次调用QFile::size()方法。它适用于除一处以外的所有地方。我将展示那个地方和一个用于比较的地方。这不起作用:while(!in.atEnd())if(fileOut.size()!=0)//This"if"isn\... 查看详情

Qt,2个QRadioButton集之间的冲突

...【发布时间】:2015-07-1714:17:04【问题描述】:我的小部件应用程序界面包含2组QRadioButtons,彼此独立。其中一组实际上是QRadioButtons的QDialogBu​​ttonBox。起初,这两个集合都是有意的,这意味着,单击集合中的一个按钮会取消选... 查看详情

如何访问应用程序目录外的文件

】如何访问应用程序目录外的文件【英文标题】:Howtoaccessfilesoutofappdirectory【发布时间】:2016-05-0517:17:14【问题描述】:我正在开发一个可以列出电话文件的应用程序,例如.pdf。但到目前为止我只能读取应用程序目录中的文件... 查看详情

以编程方式卸载浏览器外的 silverlight 应用程序

】以编程方式卸载浏览器外的silverlight应用程序【英文标题】:Uninstallout-of-browsersilverlightapplicationprogrammatically【发布时间】:2011-02-1316:54:35【问题描述】:如何以编程方式卸载浏览器外的silverlight4应用程序而不是使用上下文菜单... 查看详情

GBoard外的贴纸包

...系统发现),但我希望能够在不使用键盘的情况下从我的应用程序访问这些贴纸包(我的应用程序允许用户 查看详情

ASHX 处理程序无法与我的网络外的客户端正常工作

...:30:37【问题描述】:我有一个供我组织内外的人员使用的应用程序。此应用程序同时导出Excel(.xlsx)和PDF文件。我在文件导出时遇到问题。它适用于我网络上的人,但我网络外的人收到“文件读取错误。文件类型不受支持或文 查看详情

ui线程外的工人阶级

...ead【发布时间】:2017-02-2320:41:39【问题描述】:我必须在应用程序的开头进行大量的sql操作(插入太多)。我有一个像这样的启动画面。publicclassSplashScreenextendsAppCompatActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState) 查看详情

如何让 .exe 打包的 Ruby Shoes 应用程序引用包外的资源?

】如何让.exe打包的RubyShoes应用程序引用包外的资源?【英文标题】:Howtogeta.exepackagedRubyShoesapptoreferenceresourcesoutsidethepackage?【发布时间】:2016-04-2322:05:14【问题描述】:我正在尝试制作一个独立的.exe打包的RubyShoes应用程序,该... 查看详情

更新组件外的元素

...:我正在使用Laravel和Vue创建一个具有主layout.blade文件的应用程序,然后我正在使用组件和VueRouter。我无法理解的是如何实现以下目标。假设我有两条路由“Home”和“About”,它们调用专用的home.vue和about.vue组件文件。如果在组件 查看详情

如何检测 UITextField 外的点击(关闭键盘)

...rd)【发布时间】:2014-07-3114:38:31【问题描述】:我的iPhone应用程序有一个数字文本字段(和一些其他控件)。当用户点击文本字段时会显示一个数字键盘。我喜欢尽快关闭这个数字键盘([self.textFieldresignFirstResponder]) 查看详情

XAMPP 指向根文件夹外的文件

...运行除根文件夹(htdocs)之外的访问问题。当我将我的Web应用程序放在具有默认httpd.conf文件的htdocs中时,当我尝试将我的Web应用程序URL指向httpd.conf时它会抛出Youdon\'thavepe 查看详情

我可以在不使用其 UI 框架的情况下将 Qt 用作 C++ 库吗

...在不实际使用Qt用户界面系统的情况下,使用Qt来提高MFC应用程序的工作效率是否有意义?我目前正在为我的基于MFC的应用程序寻找一个很好的生产力库,其中包含有用的容器类、字符串算法、线程类、I/O类等。在我看来,Q 查看详情

qt怎么调出cmd窗口

...运行程序,所以当你的程序是控制台程序(console)是才有意义参考技术AQT程序一般可分为consoleapp(subsystemconsole)和guiapp(subsystemwindow)2种,你如果想要把创建consoleapp的话,直接用QTCreator新建一个新的工程(QT4控制台应用),运行下... 查看详情