美文网首页
Qt中获取系统用户名

Qt中获取系统用户名

作者: _compass | 来源:发表于2021-07-02 09:38 被阅读0次

1.用户的主目录

QString name = QDir::home().dirName();

2.使用getenv

#include <stdlib.h>

getenv("USER"); ///for MAc or Linux
getenv("USERNAME"); //for windows
// 可以使用qgetenv代替getenv

3.网络中主机名:

    QString machineName = QHostInfo::localHostName();

此处见上条文章,需要pro里配置。

  1. 根据不同平台,QProcess获取:
#include <QCoreApplication>
#include <QProcess>
#include <QDebug>

int main(int argc, char **argv)
{
// Strictly pseudo code!
#ifdef Q_OS_WIN
    char acUserName[MAX_USERNAME];
    DWORD nUserName = sizeof(acUserName);
    if (GetUserName(acUserName, &nUserName))
        qDebug << acUserName;
    return 0;
#elif Q_OS_UNIX
    QCoreApplication coreApplication(argc, argv);
    QProcess process;
    QObject::connect(&process, &QProcess::finished, [&coreApplication, &process](int exitCode, QProcess::ExitStatus exitStatus) {
        qDebug() << process.readAllStandardOutput();
        coreApplication.quit();
    });
    process.start("whoami");
    return coreApplication.exec();
#endif
}

5.还可使用:QProcessEnvironment

QProcessEnvironmentenv = QProcessEnvironment::systemEnviroment();
QString username = env.value("USER");

6.使用QStandardPaths

#include <QStandardPaths>
#include <QStringList>
#include <QDebug>
#include <QDir>

int main()
{
    QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
    qDebug() << homePath.first().split(QDir::separator()).last();
    return 0;
}

以上。

相关文章

网友评论

      本文标题:Qt中获取系统用户名

      本文链接:https://www.haomeiwen.com/subject/nedeultx.html