2015-08-30 2 views
-1
QString username = ui->lineEdit->text(); 
QString password = ui->lineEdit_2->text(); 
QMessageBox Failed; 
Failed.setWindowFlags(Qt::FramelessWindowHint); 

if(username == "Jon" && password == "12345") 
{ 
    Failed.setText("Login failed. Try again."); 
    Failed.exec(); 
} else { 
    Failed.setText(password); 
    Failed.exec(); 
} 

Использование qt. Извините, если это было задано до того, как я был совершенно новым и не смог найти ответ. Я не понимаю, что я делаю неправильно. Я установил имя пользователя и пароль для текста внутри редактирования строки на ui. Но каждый раз, когда я нажимаю эту кнопку, вывод диалогового текста всегда пуст. Как я могу получить его, чтобы текст читался?Qt не получает текст от lineedit

+0

Вы можете вывести 'username' и' password' с 'qDebug()' перед условием? Это поможет. – LogicStuff

+0

Ваша логика довольно странная, почему вы считаете, что логин не удался для одной конкретной пары логинов/паролей? – demonplus

+0

Я просто пытаюсь изучить базовые C++ и базовые qt. Для этого я просто пытаюсь выяснить, как общаться между ui и моим кодом, так как до этого я был полностью основан на терминале. – Tempuser221

ответ

0

хорошо, я провел несколько тестов, и это то, что я нашел получил:

если вы создали какой-то связи слот сигнала, который вызывает функцию с указанной тех, если/иначе statmentsthe программа будет работать. это следующая программа я сделал:

dialog.h:

#ifndef DIALOG_H 
    #define DIALOG_H 

    #include "ui_dialog.h" 
    #include <QDialog> 

    class DialogClass : public QDialog, public Ui::Dialog 
    { 
     Q_OBJECT 

    public: 
     DialogClass(QWidget *parent = 0); 
    public slots: 
     void check(); 
    }; 

    #endif // DIALOG_H 

dialog.cpp:

#include "dialog.h" 
    #include <QMessageBox> 

    DialogClass::DialogClass(QWidget *parent) : QDialog(parent) 
    { 
     setupUi(this); 
     connect(pushButton, SIGNAL(clicked()), this, SLOT(check())); 
    } 

    void DialogClass::check() 
    { 
     QString username = lineEdit->text(); 
     QString password = lineEdit_2->text(); 

     QMessageBox Failed; 
     Failed.setWindowFlags(Qt::FramelessWindowHint); 

     if(username == "Jon" && password == "12345") 
     { 
      Failed.setText("Login failed. Try again."); 
      Failed.exec(); 
     } else { 
      Failed.setText(password); 
      Failed.exec(); 
     } 
    } 

и main.cpp

#include <QApplication> 
    #include <QMessageBox> 
    #include "dialog.h" 
    int main(int argc, char *argv[]) 
    { 
     QApplication a(argc, argv); 
     DialogClass w; 
     w.show(); 
     return a.exec(); 
    } 

bassically, все, что я do делает класс диалога очень похожим на вашу главную функцию, только у моей кнопки есть кнопка dialog.ui имеет кнопку. После этого я использую кнопку, чтобы установить соединение с сигнальным слотом, которое гарантирует, что при нажатии этой кнопки будет вызываться функция check() (которая в основном выполняет ваш алгоритм if/else в слот), который проверяет, имя пользователя - «Jon», а пароль - «12345».

Почему ваша первоначальная реализация не сработала?

Извините, но я не уверен.

Однако этот подход должен работать. Я добавлю ответ, если я когда-нибудь выясню, почему утверждения if не собирались. Однако этот подход должен заставить ваше приложение работать.

счастливое кодирование!

Смежные вопросы