Russian Qt Forum
Ноябрь 25, 2024, 01:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как указать слот в дизайнере?  (Прочитано 10977 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Февраль 03, 2016, 11:07 »

Решил начать разбираться с дизайнером. Сделал через мастер оконное приложение с главным виджетом MainWindow. Сделал на нем кнопку viewBufferButton. Выделил эту кнопку и в контекстном меню нажал на "Перейти к слоту" -> clicked().

В результате в классе MainWindow появился метод:

Код:
void MainWindow::on_viewBufferButton_clicked()
{

}

Полез настраивать связку сигналов и слотов в "Редактор сигналов и слотов". Выбираю

Отправитель: viewBufferButton
Сигнал: clicked()
Получатель: MainWindow
Слот: а вот слот on_viewBufferButton_clicked() выбрать невозможно.

Почему так? Он должен и так срабатывать, потому что начинается на "on_", или необходимо еще какие-то действия сделать чтобы в дизайнере увиделся этот слот?
Записан

Собираю информацию по крупицам
http://webhamster.ru
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 03, 2016, 11:24 »

Виджеты и диалоги с автосоединением.
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #2 : Февраль 03, 2016, 12:43 »

Он соединяется автоматом, ища on_ИмяВиджета_сигналВиджета(аргументы).
И его соответственно не будет в дизайнере, ибо дизайнер вообще не в курсе что там у вас в коде Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Февраль 03, 2016, 14:53 »

если используешь 11-й стандарт, то проще коннектить к лямбдам в коде (писанины меньше, да и выдумывать имена методам не надо)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #4 : Февраль 03, 2016, 15:13 »

Лямбды эт хорошо, ускоряет написание кода, но вот читаемость становится в разы хуже Улыбающийся
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Февраль 03, 2016, 15:38 »

Зато количество бонусов нивелирует этот сомнительный недостаток.
Записан

Qt 5.11/4.8.7 (X11/Win)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Февраль 03, 2016, 15:42 »

kambala, можете привести пример, пожалуйста?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Февраль 03, 2016, 15:45 »

простейший пример из проекта:
Код
C++ (Qt)
connect(ui->actionAbout, &QAction::triggered, [this]{
   QMessageBox::about(this, tr("About"), tr("about text"));
});

тут чуть похитрее примеры: https://github.com/kambala-decapitator/HornAppDesktop/blob/master/widget.cpp
« Последнее редактирование: Февраль 03, 2016, 15:48 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Февраль 03, 2016, 15:49 »

Для нашего случая
Код
C++ (Qt)
if( auto pb = findChild< QPushButton* >( "viewBufferButton" ) )
   connect( pb, &QPushButton::clicked, [ this, pb ] {
             ...
        } );
 
Записан

Qt 5.11/4.8.7 (X11/Win)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Февраль 03, 2016, 16:01 »

^ а зачем это городить, если есть ui->viewBufferButton?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Февраль 03, 2016, 16:04 »

К слову, такую расстановку пробелов
Цитировать
if( value )
видел еще в 90-х. Из какой книжки этот пижонский стиль? (наверное что-то типа "идеальный код"). У каких больших авторитетов это переняли?  Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Февраль 03, 2016, 16:09 »

^ а зачем это городить, если есть ui->viewBufferButton?
+1
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #12 : Февраль 03, 2016, 16:10 »

У каких больших авторитетов это переняли?  Улыбающийся
Можно и по холиварить. Улыбающийся

А что не так? Я так пишу и никакого дискомфорта не испытываю. В отличие от сливающегося в кашу:
Код
C++ (Qt)
if(value)
 
« Последнее редактирование: Февраль 03, 2016, 16:14 от Old » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #13 : Февраль 03, 2016, 16:22 »

О-о-о-о!! А я пишу
Код
C++ (Qt)
if (value)
  Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Февраль 03, 2016, 16:23 »

О-о-о-о!! А я пишу
И у какого пижона вы это подсмотрели? Подмигивающий
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 23.