Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Qt C++函数返回多个不同的数据类型?_C++_Qt - Fatal编程技术网

如何使用Qt C++函数返回多个不同的数据类型?

如何使用Qt C++函数返回多个不同的数据类型?,c++,qt,C++,Qt,我最近启动了qt,有人问我是否可以构建一个简单的函数,在一个方法中返回不同类型的int-string-datatime数据,比如login,如果我传递方法username和password,我将返回所有用户数据,我可以在主窗体中调用函数并使用那里的用户数据。我已经搜索并找到了一些示例,但是仍然很难找到一个chive。我使用了这个示例,但它只返回一个值。这是代码 bool database_mysql::test_query(QList<QString>& namesList)

我最近启动了qt,有人问我是否可以构建一个简单的函数,在一个方法中返回不同类型的int-string-datatime数据,比如login,如果我传递方法username和password,我将返回所有用户数据,我可以在主窗体中调用函数并使用那里的用户数据。我已经搜索并找到了一些示例,但是仍然很难找到一个chive。我使用了这个示例,但它只返回一个值。这是代码

bool database_mysql::test_query(QList<QString>& namesList)
{
    bool result = false;
    namesList.clear();//clear possible old entries

    if(!connect()){
        qDebug() << "Database Not Connected!";
    }else{
        QSqlQuery query;
        query.exec("SELECT * FROM Users");
        while (query.next()){
            QString name = query.value(2).toString();
            namesList.append(name);
         }
        result = true;
    }
    return result;
}
以及传递用户名和密码以检查用户的代码
任何人都可以帮忙。

您应该声明自己的类/结构来保存此数据。例如,您可以使用以下声明创建文件User.h:

#pragma once

struct User {
    int       id;
    QString   name;
    QDateTime joined;
    // anything else in your DB
};
在DB模块的头文件中,例如,database_mysql.h:


然后,test_query函数应从数据库中检索行,实例化用户对象,并将这些对象插入用户列表。

返回您自己的数据结构,即结构。这与QT和一个基本的C++问题无关。Jiu对不应在任何地方使用,无论它是QPair还是std::pair,因为它隐藏了底层信息。请使用QVariant,它可以保存最常见的类型:如果希望根据函数内部返回不同的内容,或者,如果您总是希望返回同一组thingsQVariant,那么前面已经提到的结构/对象是一种有用的返回类型。您还可以将引用作为参数传入,并在函数中为其赋值,而不是返回。除此之外,模板也可以工作。谢谢,但我需要一个示例。我会在头文件和源文件中添加用户结构,还是只在源文件中添加用户结构,因为我已经从头文件调用了此方法。它将类似于bool test_queryQList&namesList;在c checkuserstring username,string Pass中,如何在登录表单中传递要从数据库中选择的函数的用户名和密码?我编辑了我的答案,让您了解如何构造源文件。至于你的其他问题,我不明白你的意思…我有前面的步骤,然后在我的主窗口中,我用这种方式调用了函数database_mysql db;QList名称;db.test_querynames;foreachUser,名称{qDebug
#pragma once

struct User; // forward declaration

class database_mysql {
public:
    bool database_mysql::test_query(QList<User>& users);
};
#include <database_mysql.h>
#include <User.h>

bool database_mysql::test_query(QList<User>& users) {
    ...
}