SIGNAL SLOT
У меня есть класс MainWindow. Я делаю класс типа Dialog. Создаю экземпляр этого класс в .h MainWindow. И по нажатии кнопки в MainWindow делаю dialog->show(). Вопрос, как соединить кнопку в dialog со слотом в MainWindow?
#ifndef CREATEDIALOG_H #define CREATEDIALOG_H #include <QDialog> #include <QtWidgets> #include <QLayout> namespace Ui { class createDialog; } class createDialog : public QDialog { Q_OBJECT public: explicit createDialog(QWidget *parent = 0); QPushButton *acceptbutton; QLineEdit *firstName; QLineEdit *lastName; QLineEdit *patronymic; QCheckBox *scholarship; QDateEdit *birthdate; ~createDialog(); private: Ui::createDialog *ui; }; #endif // CREATEDIALOG_H
dialog = new createDialog; connect(dialog->acceptbutton, SIGNAL(clicked(bool)), this, SLOT(insertToSqlModel())); dialog->show();
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Вообще немного не понятно в коде. У вас все кнопки созданы в ui файле через дизайнер? Тогда зачем объявлять указатели в public секции на все эти элементы? ui-элементы должны быть скрыты, не стоит вытягивать указатели на них в public секцию.
Что касается сигналов и слотов, то я бы сделал слот клика по кнопке accept, в котором бы испускал специальный сигнал.
Заголовочный файл Файл реализацииВ MainWindow тогда это подключение может выглядеть следующим образом:
P/S/ Старайтесь называть классы с большой буквы, чтобы не было путаницы в коде между названиями классов и именами переменных.
Ui написал руками в конструкторе Dialog. Кстати, как лучше делать интерфейсы? Самому писать или через дизайнер? Я правильно понимаю, что мы по нажатию на вызываем сигнал insertToSqlModel(), который соединяем в MainWindow с функцией insertToSqlModel().
Спасибо.У меня впринципе все работает, но вот такая штука в дебаге
да сам ручками, а это как-то влияет?
И к первому ваше посту здесь, как-то можно поменять название созданного уже класса? централизованно. с createDialog на CreateDialog.
Вообще влияет, в ui файле отражаются изменения. А вы вручную прописали этот слот так, будто он был через дизайнер сделан, вот Qt и пытается найти к нему сигнал, если переписать, например, так pushButtonClicked(), то не должна выпадать эта ошибка. Но нужно будет и подключение сигнала не забыть к этому методу.
Кликнуть по createDialog правой кнопкой мыши, выбрать рефакторинг, переименовать. Тогда практически везде переименуется. Останется только в ui файле подкорректировать, открывать ui файл в режиме текстового редактора, тогда получится его редактировать из IDE