qurlinfo在qt5中_在Qt应用程序中获取当前工作目录

本文介绍了如何在Qt5的C++部分设置上下文属性,以便在QML中轻松访问应用程序的工作目录、用户主目录、桌面路径等。通过QStandardPaths获取标准路径,并在QML中显示这些路径。
摘要由CSDN通过智能技术生成

要添加到哈萨克斯坦的答案, 每当我想提出一个QML应用程序,我倾向于把它添加到主C++

#include

#include

#include

int main(int argc, char *argv[])

{

QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;

// get the applications dir path and expose it to QML

QUrl appPath(QString("%1").arg(app.applicationDirPath()));

engine.rootContext()->setContextProperty("appPath", appPath);

// Get the QStandardPaths home location and expose it to QML

QUrl userPath;

const QStringList usersLocation = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);

if (usersLocation.isEmpty())

userPath = appPath.resolved(QUrl("/home/"));

else

userPath = QString("%1").arg(usersLocation.first());

engine.rootContext()->setContextProperty("userPath", userPath);

QUrl imagePath;

const QStringList picturesLocation = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);

if (picturesLocation.isEmpty())

imagePath = appPath.resolved(QUrl("images"));

else

imagePath = QString("%1").arg(picturesLocation.first());

engine.rootContext()->setContextProperty("imagePath", imagePath);

QUrl videoPath;

const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);

if (moviesLocation.isEmpty())

videoPath = appPath.resolved(QUrl("./"));

else

videoPath = QString("%1").arg(moviesLocation.first());

engine.rootContext()->setContextProperty("videoPath", videoPath);

QUrl homePath;

const QStringList homesLocation = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);

if (homesLocation.isEmpty())

homePath = appPath.resolved(QUrl("/"));

else

homePath = QString("%1").arg(homesLocation.first());

engine.rootContext()->setContextProperty("homePath", homePath);

QUrl desktopPath;

const QStringList desktopsLocation = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);

if (desktopsLocation.isEmpty())

desktopPath = appPath.resolved(QUrl("/"));

else

desktopPath = QString("%1").arg(desktopsLocation.first());

engine.rootContext()->setContextProperty("desktopPath", desktopPath);

QUrl docPath;

const QStringList docsLocation = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);

if (docsLocation.isEmpty())

docPath = appPath.resolved(QUrl("/"));

else

docPath = QString("%1").arg(docsLocation.first());

engine.rootContext()->setContextProperty("docPath", docPath);

QUrl tempPath;

const QStringList tempsLocation = QStandardPaths::standardLocations(QStandardPaths::TempLocation);

if (tempsLocation.isEmpty())

tempPath = appPath.resolved(QUrl("/"));

else

tempPath = QString("%1").arg(tempsLocation.first());

engine.rootContext()->setContextProperty("tempPath", tempPath);

engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

return app.exec();

}

使用它QML

....

........

............

Text{

text:"This is the applications path: " + appPath

+ "\nThis is the users home directory: " + homePath

+ "\nThis is the Desktop path: " desktopPath;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值