我必须在以下环境中部署Qt应用程序:
我需要一个通用的访问目录来放置许可文件,并且我需要机器的每个用户都有对它的读/写访问权限--而不仅仅是管理员。
我检查了许多Qt函数,如下所示:
QString QDir::homePath()
QDir QDir::home ()
QString QDir::rootPath ()
QString QDir::tempPath ()
...but它们似乎都返回特定于用户的路径或过于通用的路径。
是否有任何特定于Qt的函数来获得公共的“应用程序路径”?
考虑到操作系统的版本,我已经开始考虑创建自己的功能了,但即使在这种情况下,我也感到有些迷茫。您知道有什么好的来源可以为上面提到的操作系统找到适合自己的途径吗?
发布于 2011-06-28 04:39:31
这是对我自己问题的回答,但我会等着看是否有更好的解决方案。(也许有一个Qt函数我错过了)。
我使用QSettings类(@thequark:+1作为灵感来源)进行了以下黑客攻击:
---------------------------------------------
QString orgName = "fooOrg";
QString appName = "fooApp";
QSettings qsettings(QSettings::IniFormat, QSettings::SystemScope, orgName, appName);
QString iniFilepath = qsettings.fileName();
QString commAppPath = iniFilepath.left(iniFilepath.length() -
QString("/fooOrg/fooApp.ini").length());
---------------------------------------------
正如您所看到的,我并不真正使用QSettings对象,但是我只需要使用它的文件路径来查看Qt将把它存储在哪里。
重要的是要使用:
上面的代码为(1) iniFilepath (2) commAppPath变量和各种O/S提供了以下结果:
Mac雪豹10.6.7
Windows SP3
Windows 7 (64)和Windows SP2
虽然这是一个黑客,但我认为这是一个很好的解决方案,只涉及内部Qt调用,而不使用任何特定于O/S的函数。
如果你有更好的主意..。请让我知道。
编辑-PS: Mac中的目录"/Library/Preferences“对于非管理员用户是不可写的。最后,我使用了目录"/Users/Shared“。
发布于 2011-06-28 02:32:59
我也是Qt中的n00b,所以我不确定这是否是最好的选择,但是使用QSettings
从设置/配置文件获取许可文件的路径如何?这个具有适当值的文件应该由安装程序创建。安装程序可以负责使用一些特定于操作系统的默认值,甚至可以在安装时询问用户,因此您的应用程序独立于操作系统。QSettings
具有持久性,所以您不必费心阅读、写入文件。
发布于 2011-06-28 02:58:59
QDesktopServices::DataLocation枚举似乎合适。
https://stackoverflow.com/questions/6504799
复制相似问题