如何将变量从一个qt表单传递给另一个表单qt表单?

时间:2017-03-25 17:56:04

标签: c++

您好我遇到了将输入的字符串从一个表单传递到另一个表单的问题。此代码的头文件包含getter和setter,而私有变量Username也存在。我想传递输入的字符串用户名这段代码

void norm_user::on_pushButton_clicked(){
login conn;
QString  Password,username;
username = ui->lineEdit_username->text();
set_username(username);

Password = ui->lineEdit_password->text();


if(!conn.connOpen2())
{
    qDebug() << "No connection to db";
    return;
}


conn.connOpen2();
QSqlQuery qry;

qry.prepare("SELECT Username, Password FROM Users WHERE Username=\'" +username+ "\' AND Password=\'" +Password+ "\'");

if(qry.exec())
{
    if(qry.next())
    {
        ui->label_check_1->setText("[+] Valid username and password");
        QString msg = "Username = " + qry.value(0).toString() + " \n" +
                "Password = " + qry.value(1).toString() + " \n" +
                "Role = " + qry.value(2).toString();

        QMessageBox::warning(this,"Login was successful",msg);

        ui->testing->setText(get_username());

       users_platform platform;
        platform.setModal(true);
        platform.exec();

    }
    else
    {
        ui->label_check_1->setText("[-]Wrong username or password");
    }
}

}

这是项目的第二种形式,iam假设在qt标签中传递字符串。我想如何将字符串传递给此代码?

users_platform::users_platform(QWidget *parent ) :
QDialog(parent),
ui(new Ui::users_platform)
{
norm_user c;
ui->setupUi(this);
login conn;
QString usr;
QFileInfo checkfile(path_2);


if(checkfile.isFile())
{
     if(conn.connOpen2())
     {
         ui->label_check->setText("[+]Connected to Database");
         ui->test_1->setText(c.get_username());
     }
     else
     {
         ui->label_check->setText("[!] Database not found");
     }
 }

}

1 个答案:

答案 0 :(得分:0)

首先,代码中有一个不必要的circular dependency。您要在users_platform内实例化norm_user,并在norm_user constructor内创建users_platform。我认为没有理由这样做,因为你的norm_user c变量不会包含任何有用的信息。

如果norm_userusers_platform platform的创建者,则应该有资格传递任何必要的信息。您可以通过构造函数users_platform::users_platform(QWidget *parent, const QString& username)简单地传递它。或者你可以通过setter。有些人会争辩说,这不是一个好的做法,但它会完成这项工作。不幸的是,你在norm_user的构造函数中做了很多事情,所以这对你不起作用。此外,您可以使用signals and slots来传递变量,但使用您当前的设计,这对您来说也不会有任何帮助。