您好我遇到了将输入的字符串从一个表单传递到另一个表单的问题。此代码的头文件包含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");
}
}
}
答案 0 :(得分:0)
首先,代码中有一个不必要的circular dependency。您要在users_platform
内实例化norm_user
,并在norm_user
constructor内创建users_platform
。我认为没有理由这样做,因为你的norm_user c
变量不会包含任何有用的信息。
如果norm_user
是users_platform platform
的创建者,则应该有资格传递任何必要的信息。您可以通过构造函数users_platform::users_platform(QWidget *parent, const QString& username)
简单地传递它。或者你可以通过setter。有些人会争辩说,这不是一个好的做法,但它会完成这项工作。不幸的是,你在norm_user
的构造函数中做了很多事情,所以这对你不起作用。此外,您可以使用signals and slots来传递变量,但使用您当前的设计,这对您来说也不会有任何帮助。