Sqlite 在QT C++;

Sqlite 在QT C++;,sqlite,qt,global-variables,qt5,Sqlite,Qt,Global Variables,Qt5,我有一个登录页面和一个欢迎页面(如果用户可以绕过登录,该页面将打开)。在我的登录页面 有一个用于输入用户名的行编辑。因此,为了保存用户名,我在中声明了一个全局变量 登录名是。 我的登录名.h文件: #include <QSqlQuery> #include <QGridLayout> #include <QPushButton> #include <QString> #include <QLabel> #include <QFra

我有一个登录页面和一个欢迎页面(如果用户可以绕过登录,该页面将打开)。在我的登录页面 有一个用于输入用户名的行编辑。因此,为了保存用户名,我在中声明了一个全局变量 登录名是。 我的登录名.h文件:

#include <QSqlQuery>
#include <QGridLayout>
#include <QPushButton>
#include <QString>
#include <QLabel>
#include <QFrame>
#include <QSqlRecord>
#include <QFileDialog>
#include <QPixmap>
#include <QMessageBox>


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class login : public Qlogin
{
   Q_OBJECT

  public:
  login(QWidget *parent = nullptr);
  ~login();

 private:
  Ui::login *ui;
     QString userDat; ///global variable
 };
 #endif // MAINWINDOW_H
我已经在welcome.h和welcome.cpp中包含了所有必需的头文件。但它仍然说: userDat未在此作用域中声明。 请帮助更新评论:

#include <QSqlQuery>
#include <QGridLayout>
#include <QPushButton>
#include <QString>
#include <QLabel>
#include <QFrame>
#include <QSqlRecord>
#include <QFileDialog>
#include <QPixmap>
#include <QMessageBox>


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class UserData { 
public: 
static QString userName; 
};

class login : public Qlogin
{
   Q_OBJECT

  public:
  login(QWidget *parent = nullptr);
  ~login();

 private:
  Ui::login *ui;
 };
 #endif // MAINWINDOW_H

您已经在类登录中声明了userDat,而不是全局声明。因此,您的userDat仅在登录类范围内可用。将userDat移动到#endif//main window_HThanks之前……但是,它仍然说“userDat的多个定义”,实际上在oop中使用全局变量不是个好主意,最好将数据打包到某个对象中,至少使类成员保持静态。可以如下所示:class UserData{public:static QString userName;}/*在source*/QString UserData::userName=“”中的某个地方初始化它;UserData::userName=“某个用户名”;ui->welcome\u lineEdit->setText(UserData::userName);我必须从lineEdit中检索用户名。在这种情况下应该如何处理?已解决!!!!!!非常感谢
ui-> welcome_lineEdit->setText(userDat);
#include <QSqlQuery>
#include <QGridLayout>
#include <QPushButton>
#include <QString>
#include <QLabel>
#include <QFrame>
#include <QSqlRecord>
#include <QFileDialog>
#include <QPixmap>
#include <QMessageBox>


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class UserData { 
public: 
static QString userName; 
};

class login : public Qlogin
{
   Q_OBJECT

  public:
  login(QWidget *parent = nullptr);
  ~login();

 private:
  Ui::login *ui;
 };
 #endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQueryModel>
#include <QSqlQuery>
#include <QGridLayout>
#include <QPushButton>
#include <QString>
#include <QLabel>
#include <QFrame>
#include <QSqlRecord>
#include <QFileDialog>
#include <QPixmap>
#include <QMessageBox>

QString UserData::userName = "empty";

login::login(QWidget *parent)
: Qlogin(parent)
, ui(new Ui::login)
{
ui->setupUi(this);

UserData::userName = ui-> login_lineEdit ->text();


 }

  login::~login()
 {
  delete ui;
  }
ui-> welcome_lineEdit->setText(UserData::userName);