Задать вопрос
@esy1993

Как записать значение QLineEdit в переменную?

В следующих файлах приведена попытка реализации диалога авторизации пользователя в базе данных:
autorization.h
#ifndef AUTORIZATION_H
#define AUTORIZATION_H

#include <QWidget>

namespace Ui {
class Autorization;
}

class Autorization : public QWidget
{
    Q_OBJECT

public:
    explicit Autorization(QWidget *parent = 0);
    ~Autorization();

private slots:

void on_autorizOK_clicked();

private:
    Ui::Autorization *ui;
};

#endif // AUTORIZATION_H

autorization.cpp
#include "autorization.h"
#include "ui_autorization.h"
#include "autorization.h"
#include <QtSql/QSqlQuery>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include "QString"

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

}

Autorization::~Autorization()
{
    delete ui;
}

void on_autorisOK_clicked()

{
    QString userName = autorizUser->text();
    QString userPass = autorizPass->text();
}


В файле autorization.h указан слот для принятия сигнала от кнопки "ОК" экранной формы: void on_autorizOK_clicked();. В файле autorization.cpp прописана функция, выполняющаяся при срабатывании слота, которая должна создавать 2 объекта QString - userName и userPass и присваивать им значения полей autorizUser и autorizPass соответственно. После этого планируется использовать переменные в качестве имени пользователя и пароля при вызове db.setUserName и db.setPassword. Но при сборке этого кода возникает 2 ошибки: autorizUser /autorizPass was not declared in this scope.
Я правильно перевожу ошибку на русский - "Переменные не объявлены в рамках процедуры"? На экранной форме имена объектов QLineEdit точно такие же как в коде cpp. Как решить эту проблему?
  • Вопрос задан
  • 4505 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@esy1993 Автор вопроса
Решил проблему таким образом:
Было
void on_autorisOK_clicked()

{
    QString userName = autorizUser->text();
    QString userPass = autorizPass->text();
}

Стало
void Autorization::on_autorizOK_clicked()
{
    QString userName = ui->autorizUser->text();
    QString userPass = ui->autorizPass->text();

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Glucke
Попробуй так.
void on_autorisOK_clicked()

{
QString userName = ui->autorizUser->text();
QString userPass = ui->autorizPass->text();
}
Ответ написан
@vilgeforce
Раздолбай и программист
Если у вас on_autorisOK_clicked() - слот (ниже в тексте, кстати, другое имя), то он должен быть в классе, а не просто так. Далее, доступ к гую осуществляется через ui.element_name->...
Ответ написан
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
void Autorization::on_autorisOK_clicked()
{
    QString userName = ui->autorizUser->text();
    QString userPass = ui->autorizPass->text();
}

Совет: сначала разобраться хотя бы с основами ООП в С++, а потом уже начинать работать с Qt.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы