薩拉姆媧AlikomSIGNAL和2個窗口之間SLOT QT
您好老少:)
我想連接到使用SIGNAL和SLOT,以便可以通過第一窗口傳遞變量到所述第二窗窗
正是我想從login.cpp的lineEDIT合格nom
價值menu.cpp
我有2個窗戶
login.ui 和 menu.ui
這是login.h
#ifndef LOGIN_H
#define LOGIN_H
#include <QMainWindow>
#include <QtSQl>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QFileInfo>
#include <QDialog>
#include "menu.h"
namespace Ui {
class login;
}
class login : public QMainWindow
{
Q_OBJECT
public:
explicit login(QWidget *parent = 0);
~login();
private slots:
void on_pushButton_clicked();
private:
Ui::login *ui;
Menu *menu;
QSqlDatabase db;
};
#endif // LOGIN_H
login.cpp
#include "login.h"
#include "ui_login.h"
#include "QPixmap"
#include "QCryptographicHash"
#include <QDialog>
login::login(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::login)
{
ui->setupUi(this);
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
ui->spinBox,SLOT(setValue(int)));
// logos header
QPixmap isem_img("C:/Users/Amine/Documents/QT/E-LogBook/resource/img/ISEM.png");
ui->img_ISEM->setPixmap(isem_img);
QPixmap mm_img("C:/Users/Amine/Documents/QT/E-LogBook/resource/img/MM.png");
ui->img_MM->setPixmap(mm_img);
// Connexion database
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("");
db.setDatabaseName("journal_machine");
// ouverture database
if(db.open())
{
ui->label_db_status->setText("Connecté");
}else{
ui->label_db_status->setText("Connexion echoué");
}
}
login::~login()
{
delete ui;
}
void login::on_pushButton_clicked()
{ menu = new Menu(this);
menu ->show();
QString password,nom,password_db;
nom = ui->lineEdit_nom->text();// get data from input
password = ui->lineEdit_password->text();// get data from input
if (password == NULL || nom == NULL){ // si les cases sont vides
ui->label_etat->setText("Champ non rempli");
} else
{
QSqlQuery query;
query.exec("SELECT * FROM `equipage` WHERE Nom='"+nom+"'");// Query
if (query.next() == true) {
password_db = query.value(2).toString(); // get value from mysql
QString password_md5 = QString(QCryptographicHash::hash((password.toUtf8()),QCryptographicHash::Md5).toHex());// cryptage du password
if (password_md5 == password_db) {// si le mot de pass est correct
// this->hide();
} else {
// si le mot de pass est faux
}
}
query.finish();
}
}
和menu.h
#ifndef MENU_H
#define MENU_H
#include <QMainWindow>
namespace Ui {
class Menu;
}
class Menu : public QMainWindow
{
Q_OBJECT
public:
explicit Menu(QWidget *parent = 0);
~Menu();
private slots:
void on_pushButton_2_clicked();
private:
Ui::Menu *ui;
};
#endif // MENU_H
menu.cpp
#include "menu.h"
#include "ui_menu.h"
#include "login.h"
Menu::Menu(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Menu)
{
ui->setupUi(this);
}
Menu::~Menu()
{
delete ui;
}
finaly的main.cpp提前
#include "login.h"
#include "menu.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
login w;
Menu z;
w.show();
z.show();
return a.exec();
}
感謝 Chokran :)
顯然你需要寫'connect'來連接信號和插槽,你的問題是什麼? – fghj
我不知道該怎麼做^^ –
在你的代碼裏有'connect'的調用,如果你不知道如何去做,你怎麼寫呢? – fghj