【问题标题】:qt connect classes in different windowsqt连接不同窗口中的类
【发布时间】:2015-05-02 13:25:42
【问题描述】:

我想这是一个有点初学者的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");
    }
}

在我的登录窗口中,我必须输入我的用户数据(用户名和密码),然后我将它与我的数据库进行比较并取回用户特定的数据。所以现在我的第二个窗口打开了。

如何管理我的第二个窗口从第一个窗口获取用户信息?我想这是一个非常简单的解决方案,但我来自 c++ 编程,我只会将它提交给我的主程序。

我忘了提到我有一个给我的用户的课程。

【问题讨论】:

  • 去掉了会打断流程的“test-speak”拼写;-)

标签: c++ qt class


【解决方案1】:

只需让主窗口在构造函数中使用User-Object。

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

MainWindow(QWidget* parent, User user);

认证后显示如下:

auto w = new MainWindow(this, your_user);
w->show();

【讨论】:

  • 那么我可以在所有窗口中使用它吗?你能给我一个简短的代码示例吗?
  • @FrederikUbben 我添加了非常小的代码示例。希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多