Получить данные с модального окна

261
06 июня 2017, 00:31

У меня есть класс основного окна MainWindow. С него я запускаю (допустим, при авторизации) модальное окно авторизации с полями "Логин", "Пароль" (lineLogin, linePass соответственно). Я знаю, что можно создать сигнал в классе модального окна

signals:
  void sendData(QString login, QString password);

и создать слот в классе главного окна и там мы производим действия с данными

private slots:
   void getData(QString login, QString password);

далее всё это дело соединить в классе главного окна

connect(&modal, SIGNAL(sendData(QString, QString)), SLOT(getData(QString, QString));

А само окно мы вызываем, допустим в слоте on_actionC_triggered()

modal.exec();

Но меня напрягает:

  1. Создание лишнего слота с принятием данных с модального окна.

  2. Какая-то громоздкость в обычном принятии значений полей.

Как можно получить данные прямо с modal.exec() , если это возможно, чтобы обработать значения полей lineLogin и linePass прямо в on_actionC_triggered()?

Если без вышеописанных методов не получится, то как можно уменьшить код?

Answer 1

Класс диалога авторизации:

class Dialog : public QDialog
{
   Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    QString getLogin() const;
    QString getPassword() const;
private:
    Ui::Dialog *ui;
};

Вызов диалога:

void MainWindow::on_toolButton_clicked()
{
    Dialog dialog(this);
    if(dialog.exec() == QDialog::Accepted)
    {
        QString login = dialog.getLogin();
        QString password = dialog.getPassword();
        //..что-то делаем дальше
    }
}
READ ALSO
Взятие объекта по адресу в конструторе копирования

Взятие объекта по адресу в конструторе копирования

Всем добрый деньСтандартный конструктор копирования в классе выглядит так: SomeClass(const SomeClass &obj) Как я понимаю, const отвечают за то, что в процессе...

264
Оператор присваивания и swap

Оператор присваивания и swap

Добрый деньЕсть такая реализация Оператора присваивания

247
Вывод по ключу в порядке убывания.

Вывод по ключу в порядке убывания.

Есть простая хеш-функция key%m; Массив из m=20 элементов Есть 100 объектов, с рандомными ключамиМассив представляет собой массив стеков

304