Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] Login check in main.cpp
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] Login check in main.cpp

Scheduled Pinned Locked Moved General and Desktop
13 Posts 3 Posters 4.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jeroentjehome
    wrote on 4 Jun 2014, 10:09 last edited by
    #4

    hi,
    You're mixing stuff up. Making a variable Log (not a great name IYAM) of class type Login. After the exec() function you request member variables be returned form Login, not from log. Also use getters from like SGaist mentioned! Much better then public member variables!

    I'll rewrite it in main.cpp
    @
    LoginDialog MyLogIn_p = new LoginDialog(this);
    if (MyLogIn_p->exec() == QDialog::Accepted)
    {
    qDebug() << "User: " << MyLogIn_p->GetUserName();
    qDebug() << "PassWord: " << MyLogIn_p->GetPassWord();
    }
    // No need to delete the MyLogIn_p class, because of the parent (this) it will be removed by Qt when it is out of scope.
    @
    Of course does your dialog get two methodes: GetUserName and GetPassWord that return a QString.

    Greetz, Jeroen

    1 Reply Last reply
    0
    • J Offline
      J Offline
      Jeroentjehome
      wrote on 4 Jun 2014, 10:11 last edited by
      #5

      Hmm, if you're still in main.cpp, did you start your application already?
      The eventQueque need to be run to handle the QDialog stuff.

      Greetz, Jeroen

      1 Reply Last reply
      0
      • S Offline
        S Offline
        SGaist
        Lifetime Qt Champion
        wrote on 4 Jun 2014, 10:20 last edited by
        #6

        exec runs an internal event loop so it should be good from that point of view

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • J Offline
          J Offline
          Jeroentjehome
          wrote on 4 Jun 2014, 11:59 last edited by
          #7

          Oh,
          Also when the QApplication is not running?

          checking docs <<
          Ah, yes, it will start a local event loop ;-)
          Never too old to learn!

          Greetz, Jeroen

          1 Reply Last reply
          0
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 4 Jun 2014, 12:49 last edited by
            #8

            Do you mean something like

            @
            int main(int argc, char *argv[])
            {
            QApplication app(argc, argv);

            QDialog dialog;
            dialog.exec();

            If (some condition) {
            QWidget widget;
            widget.show();

            return app.exec();
            

            }

            return -1;
            }
            @

            ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • S Offline
              S Offline
              sharon_obl82
              wrote on 5 Jun 2014, 03:51 last edited by
              #9

              Hi,

              For the getters, I'm not sure if this is the right way to do but here's what i have in login.cpp

              @
              QObject::connect(ui->username, SIGNAL(textChanged(QString)), ui->username, SLOT(GetUserLogin()));
              QObject::connect(ui->password, SIGNAL(textChanged(QString)), ui->password, SLOT(GetPassWord()));

              void Login::GetUserLogin(const QString user)
              {

              QString userlogin = user;
               qDebug() << "User is" << userlogin;
              

              }

              void Login::GetPassWord (const QString passwd)
              {

              QString passwdlogin = passwd;
              qDebug() << "passwd is" << passwdlogin;
              }
              @

              It runs but it get this message:

              QObject::connect: No such slot QLineEdit::GetUserLogin() in ..\ChineseNMT\login.cpp:18
              QObject::connect: (sender name: 'username')
              QObject::connect: (receiver name: 'username')
              QObject::connect: No such slot QLineEdit::GetPassWord() in ..\ChineseNMT\login.cpp:19
              QObject::connect: (sender name: 'password')
              QObject::connect: (receiver name: 'password')

              1 Reply Last reply
              0
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 6 Jun 2014, 20:07 last edited by
                #10

                Getters are not slots, just function returning something.

                You should first take a look at some of the tutorials before going further, that will give you a good base to build on

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  sharon_obl82
                  wrote on 11 Jun 2014, 08:19 last edited by
                  #11

                  Hi,
                  I'm sorry having to ask this again, I got my checking in main.cpp done but i noticed that it's looping twice. I'm not sure of where the loop is and I'm hoping that someone could help shed some light on this. Thanks very much!

                  login.cpp:
                  @
                  Login::Login(QWidget *parent) :
                  QDialog(parent),
                  ui(new Ui::Login)
                  {
                  ui->setupUi(this);
                  this->setWindowTitle("Login");
                  QObject::connect(ui->login, SIGNAL(clicked()), this, SLOT(on_login_clicked()));

                  }

                  void Login::on_login_clicked()
                  {

                  QString user = ui->username->text();
                  QString passwd = ui->password->text();
                  

                  if ((!ui->username->text().isEmpty()) && (!ui->password->text().isEmpty()))
                  {
                  QMessageBox msgBox;
                  //call checking from main.cpp
                  MainWindow mw;
                  mw.checkLogin(user, passwd);
                  if (mw.checkLogin(user, passwd) == 0)
                  {
                  qDebug() << "Success! Close dialog box";
                  QDialog::close();
                  }else
                  {
                  msgBox.setText("Login FAILED! Try again!");
                  msgBox.exec();
                  }
                  }
                  else
                  {
                  qDebug() << "Invalid credential provided!";
                  }
                  }

                  @

                  main.cpp

                  @
                  int main(int argc, char *argv[])
                  {
                  QApplication a(argc, argv);

                  MainWindow w;
                  w.showMaximized();
                  
                  Login MyLogIn;
                  MyLogIn.exec&#40;&#41;;
                  
                  
                  return a.exec&#40;&#41;;
                  

                  }

                  int MainWindow::checkLogin(QString a, QString b)
                  {

                  QString aa = a;
                  QString bb = b;
                  
                  
                  if((aa=="admin") && (bb=="1234"))
                  {
                      qDebug() << "Login success!";
                       return 0;
                  
                  }
                  else
                  {
                      qDebug() << "Login FAILED!";
                      return 1;
                  }
                  

                  }
                  @

                  result:
                  Login success!
                  Login success!
                  Success! Close dialog box
                  Login success!
                  Login success!
                  Success! Close dialog box

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 12 Jun 2014, 22:41 last edited by
                    #12

                    @
                    //call checking from main.cpp
                    MainWindow mw; << it's not the MainWindow from main.cpp
                    mw.checkLogin(user, passwd);
                    if (mw.checkLogin(user, passwd) == 0)
                    @

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      sharon_obl82
                      wrote on 13 Jun 2014, 00:57 last edited by
                      #13

                      thanks SGaist, I have changed my program the other round and now it's working without the double login.
                      Thanks very much for looking into this.

                      1 Reply Last reply
                      0

                      13/13

                      13 Jun 2014, 00:57

                      • Login

                      • Login or register to search.
                      13 out of 13
                      • First post
                        13/13
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved