C++ qt连接不同窗口中的类

C++ qt连接不同窗口中的类,c++,qt,class,C++,Qt,Class,我想这是一个初学者的QT问题,所以我希望你能给我一个简单的例子来解决我的问题 我有我的登录窗口: #include "logint.h" #include "ui_logint.h" LoginT::LoginT(QWidget *parent) : QMainWindow(parent), ui(new Ui::LoginT) { ui->setupUi(this); QPixmap pix("C:/Users/Boushar/Desktop/Bachelor_Fre

我想这是一个初学者的QT问题,所以我希望你能给我一个简单的例子来解决我的问题

我有我的登录窗口:

#include "logint.h"
#include "ui_logint.h"

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

    QPixmap pix("C:/Users/Boushar/Desktop/Bachelor_Fred/Coden/UbbenLogoKlein.jpg");
    ui->label_pic->setPixmap(pix);

    if(!connOpen())
        ui->label->setText("Failed to open Database");
    else
        ui->label->setText("Connected.....");
}

LoginT::~LoginT()
{
    delete ui;
}

void LoginT::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);

    switch(e->type())
    {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void LoginT::on_pushButton_clicked()
{
    QString username, password;
    username = ui->lineEdit_username->text();
    password = ui->lineEdit_password->text();

    if(!connOpen())
    {
        qDebug() << "Failed to open the database";
        return;
    }

    connOpen();
    QSqlQuery qry;
    qry.prepare("select * from Worker where wo_login_name='" + username + "' and wo_password='" + password + "'");

    if(qry.exec())
    {
        int count = 0;

        while(qry.next())
            count++;

        if(count == 1)
        {
            ui->label->setText("username and password is correct");
            connClose();
            this->hide();
            WorkerT workert;
            workert.setModal(true);
            workert.exec();
        }

        if(count > 1)
            ui->label->setText("Duplicate username and password");

        if(count < 1)
            ui->label->setText("username and password is not correct");
    }
}
#包括“logint.h”
#包括“ui\u logint.h”
LoginT::LoginT(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::登录)
{
用户界面->设置用户界面(此);
QPixmap pix(“C:/Users/Boushar/Desktop/Bachember_Fred/Coden/UbbenLogoKlein.jpg”);
ui->label_pic->setPixmap(pix);
如果(!connOpen())
ui->label->setText(“打开数据库失败”);
其他的
ui->label->setText(“已连接…”);
}
登录::~LoginT()
{
删除用户界面;
}
无效登录::变更事件(QEvent*e)
{
QMainWindow::changeEvent(e);
开关(e->type())
{
案例QEvent::LanguageChange:
用户界面->重传(此);
打破
违约:
打破
}
}
无效登录::在按钮上单击()
{
QString用户名、密码;
username=ui->lineEdit_username->text();
password=ui->lineEdit_password->text();
如果(!connOpen())
{
qDebug()标签->设置文本(“用户名和密码正确”);
connClose();
这个->隐藏();
沃克特沃克特;
workert.setModal(真);
workert.exec();
}
如果(计数>1)
用户界面->标签->设置文本(“重复的用户名和密码”);
如果(计数<1)
ui->label->setText(“用户名和密码不正确”);
}
}
在我的登录窗口中,我必须输入我的用户数据(用户名和密码),然后将其与我的数据库进行比较,并返回特定于用户的数据。现在我的第二个窗口打开了

如何管理我的第二个窗口从第一个窗口获取用户信息?我猜这是一个非常简单的解决方案,但我来自C++编程,我会把它提交给我的主要工作。
我忘了提到我为我的用户提供了一个类。

只需让主窗口在构造函数中获取一个
user
-对象即可

在主窗口类中,构造函数应如下所示:

MainWindow(QWidget* parent, User user);
auto w = new MainWindow(this, your_user);
w->show();
身份验证后,按如下方式显示:

MainWindow(QWidget* parent, User user);
auto w = new MainWindow(this, your_user);
w->show();

然后我可以在我所有的窗口使用它?你能给我一个简单的代码示例吗?@FrederikUbben我添加了非常小的代码示例。希望能有帮助。摆脱了“测试讲话”的拼写,这些拼写会中断流程;-)