gpt4 book ai didi

qml - 在 QML 中获取 $HOME 和/或用户名

转载 作者:行者123 更新时间:2023-12-04 17:38:01 24 4
gpt4 key购买 nike

我需要知道如何获取用户的用户名和/或主目录。我用谷歌搜索了一段时间,但只能找到 C++ 或 BASH 的变量。

如何获取用户名或主目录?我正在用 QML 编写代码。

最佳答案

我是这样实现的:

QmlEnvironmentVariable.h

#ifndef QMLENVIRONMENTVARIABLE_H
#define QMLENVIRONMENTVARIABLE_H

#include <QObject>

class QQmlEngine;
class QJSEngine;

class QmlEnvironmentVariable : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE static QString value(const QString &name);
Q_INVOKABLE static void setValue(const QString &name, const QString &value);
Q_INVOKABLE static void unset(const QString &name);
};

// Define the singleton type provider function (callback).
QObject *qmlenvironmentvariable_singletontype_provider(QQmlEngine *, QJSEngine *);

#endif // QMLENVIRONMENTVARIABLE_H

QmlEnvironmentVariable.cpp

#include "QmlEnvironmentVariable.h"
#include <stdlib.h>

QString QmlEnvironmentVariable::value(const QString& name)
{
return qgetenv(qPrintable(name));
}

void QmlEnvironmentVariable::setValue(const QString& name, const QString &value)
{
qputenv(qPrintable(name), value.toLocal8Bit());
}

void QmlEnvironmentVariable::unset(const QString& name)
{
qunsetenv(qPrintable(name));
}

QObject *qmlenvironmentvariable_singletontype_provider(QQmlEngine *, QJSEngine *)
{
return new QmlEnvironmentVariable();
}

然后在 main() 中添加对 qmlRegisterSingletonType 的调用(或者在你重新实现的 QQmlExtensionPlugin::registerTypes() 方法中,如果你正在创建一个插件):

#include "QmlEnvironmentVariable.h"
#include <QQmlEngine>
// ...
qmlRegisterSingletonType<QmlEnvironmentVariable>("MyModule", 1, 0,
"EnvironmentVariable", qmlenvironmentvariable_singletontype_provider);

最后,像这样在 QML 中使用它:

import MyModule 1.0
Item {
Component.onCompleted: console.log("My home directory: " + EnvironmentVariable.value("HOME"))
}

关于qml - 在 QML 中获取 $HOME 和/或用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com