2017-03-25 14 views
0

こんにちは私は1つのフォームから他のフォームに入力された文字列を渡すことに関連した問題があります。このコードのヘッダーファイルはゲッターとセッターを持ち、プライベート変数のユーザー名も存在します。コードあるQtフォームから他のフォームQtフォームに変数を渡すにはどうすればいいですか?

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 label.Howに文字列を渡すとしたプロジェクトの第二の形ですが、私は、このコードに文字列を渡すと仮定していますか?すべての

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

私はそれを手に入れません!私は文字列を他の形式に渡す必要があります。 –

+0

他のフォームのメンバ関数を呼び出して文字列をメンバ関数に渡すことはできますか?もう1つの方法は、他の形式のウィジェットに直接アクセスして文字列を割り当てることです。 –

答えて

0

まず、あなたはあなたのコード内の不要なcircular dependencyを持っています。 norm_userの内部にusers_platformをインスタンス化し、users_platformconstructorの内部にnorm_userを作成しています。あなたのnorm_user c変数には使用可能な情報が含まれていないため、これは理由がありません。

users_platform platformの作成者である場合は、必要な情報を渡す資格があります。あなたは単にコンストラクタusers_platform::users_platform(QWidget *parent, const QString& username)によってそれを渡すことができます。または、setterで渡すこともできます。これは良い習慣ではないが、それは仕事をするだろうと主張する人もいるだろう。残念ながら、norm_userのコンストラクタでは多くのことを行うので、これは実際にはうまくいきません。また、変数を渡すのにsignals and slotsを使用することもできますが、現在のデザインではこれは本当に役に立ちません。

関連する問題