У меня есть класс основного окна 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();
Но меня напрягает:
Создание лишнего слота с принятием данных с модального окна.
Какая-то громоздкость в обычном принятии значений полей.
Как можно получить данные прямо с modal.exec() , если это возможно, чтобы обработать значения полей lineLogin и linePass прямо в on_actionC_triggered()?
Если без вышеописанных методов не получится, то как можно уменьшить код?
Класс диалога авторизации:
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();
//..что-то делаем дальше
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости