Глобальная переменная передает нулевое значение - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь передать строковое значение из mainwindow. cpp в userdetails. cpp. Я использовала глобальную переменную. Когда программа запускается, она не передает значение переменной в userdetails. cpp. Когда я использую qDebug (globelusername.toLatin1 ()) , он не показывает никакого значения. В чем ошибка этого кода? globelusername означает глобальную переменную.

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "register.h"
#include "userdetails.h"

extern QString globelusername;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

mainwindow. cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    QString globelusername;


    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);

        ui ->loginusername->setPlaceholderText("Username");
        ui ->loginpassword->setPlaceholderText("Password");

    }

    MainWindow::~MainWindow()
    {
        delete ui;

        }

     void MainWindow::on_pushButton_2_clicked()
    {
        //database connection
        ...........

         QString username = ui ->loginusername ->text();
         QString password = ui ->loginpassword ->text();

         if(db.open()){

             //query create

           //  QMessageBox::information(this, "Sucessfull ","Sucessfully Connect the Database");

             QSqlQuery query(QSqlDatabase::database("MyConnect"));

             query.prepare(QString("SELECT * FROM user_reg_elec WHERE username = :username AND password = :password"));

             query.bindValue(":username", username);
             query.bindValue(":password", password);


            QString globelusername = username; //globlevariable
          }

userdetails. cpp

#include "userdetails.h"
#include "ui_userdetails.h"
#include <QSqlError>
#include "mainwindow.h"
#include <iostream>

Userdetails::Userdetails(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Userdetails)

{
    ui->setupUi(this);

}

Userdetails::~Userdetails()
{

}

void Userdetails::on_pushButton_4_clicked()
{

    {
            // database connection
           ...........

            qDebug(globelusername.toLatin1() );

1 Ответ

2 голосов
/ 16 июня 2020

Вы не устанавливаете globelusername . вместо этого вы создаете локальную переменную со следующей строкой:

QString globelusername = username; //globlevariable

удалите тип переменной перед установкой значения:

globelusername = username; //globlevariable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...