Название: Дважды вызывается слот: это шо за? Отправлено: xintrea от Ноябрь 22, 2017, 20:31 Решил тут после долгого перерыва поковыряться с Qt. Поставил Qt 5.9.2, QtCreator 4.4.1. И решил сделать проект с формами, генерируемыми в Designer. Раньше писал код вообще вручную, используя только программную генерацию форм.
Сделал две формы: первая - MainWindows, вторая - SettingsWindow. На первой есть кнопка settingsButton, при ее нажатии должна открываться вторая форма. Элементарно. Но оказалось, что при нажатии кнопки, слот, законнекченный с сигналом clicked() этой кнопки, вызывается два раза! Я даже сделал такой код в слоте: Код
И при одном клике вижу в консоли две строчки: Код: Click to settings button 1 Я перепроверил ui-файл в XML-виде, думал может там какой-то двойной коннект прописан, а дезигнер его не отображает? Нет, один коннект. Тогда почему слот два раза дергается? Минимальный проект прикреплен. Название: Re: Дважды вызывается слот: это шо за? Отправлено: Old от Ноябрь 22, 2017, 20:35 Это потому, что вы связали сигнал и слот в дизайнере. Срабатывает эта связь + автоконнект по имени слота.
Название: Re: Дважды вызывается слот: это шо за? Отправлено: xintrea от Ноябрь 22, 2017, 20:39 Обожечки, автоконнект по имени. Совсем забыл про это.
Название: Re: Дважды вызывается слот: это шо за? Отправлено: xintrea от Ноябрь 22, 2017, 20:50 Это потому, что вы связали сигнал и слот в дизайнере. Срабатывает эта связь + автоконнект по имени слота. Но дело в том, что слот я тоже в дизайнере сделал. Сначала сделал слот путем выделения кнопки settingsButton потом ПКМ "Перейти к слоту". Потому что пока его не создашь, в таблице редактора сигналов и слотов его невозможно выбрать. Но и после такого создания, слота не видно. Приходится перейти в режим "изменение сигналов/слотов" (хитрая кнопка сверху), выбрать кнопку settingsButton, потянуть, отпустить на форме, и тогда появится еще одна таблица сигналов-слотов, и там уже можно вручную добавить созданный слот. После чего он начинает видеться в таблице редактора сигналов и слотов. Вопрос: а как правильно создавать слот? Да, это очень нехорошо, что коннект-по-имени не виден в дизайнере... Название: Re: Дважды вызывается слот: это шо за? Отправлено: Old от Ноябрь 22, 2017, 20:58 Вопрос: а как правильно создавать слот? Не давать ему странных имен, что-бы не было автоконнекта. :)Название: Re: Дважды вызывается слот: это шо за? Отправлено: zhbr от Ноябрь 23, 2017, 06:53 Сначала сделал слот путем выделения кнопки settingsButton потом ПКМ "Перейти к слоту". после этого выбрать нужный сигнал и больше делать ничего не надо. |