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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: обработка события в Checkbox  (Прочитано 4324 раз)
nirraen
Гость
« : Октябрь 01, 2019, 11:19 »

Здравствуйте, подскажите, пожалуйста.
Пример из Delphi. Есть форма. На ней Checkbox. Если кликнуть два раза, автоматически перебрасывает в редактор кода с заготовленным шаблоном. И можно начать писать код под событие клика по Checkbox.

аналогичная ситуация, но в Qt.
Есть форма. На ней Checkbox. Если пользователь поставит галочку или уберет запустить соответствующий код на исполнение, вопрос куда копать, что читать?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 01, 2019, 11:29 »

правой кнопкой на Checkbox — go to slot — дважды кликнуть на нужный сигнал (скорее всего, это будет clicked(bool))
Записан

Изучением 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
nirraen
Гость
« Ответ #2 : Октябрь 01, 2019, 11:46 »

да это я уже нашел, но теперь вопрос ещё глупее.
создается шаблон в mainwindow.cpp
Код:
void MainWindow::on_checkbox_effectsk_clicked(bool checked)
{
   
}

нужная функция описана в main.cpp и принимает 3 значения.
Код:
void EffectSK(bool x, QString wayEffectSK, QString AppWay)
{
.......
}

как мне наладить видимость для этой функции, если слот создается в mainwindow.h
Код:
private slots:
    void on_checkbox_effectsk_clicked(bool checked);


может кто-нибудь дать пример простенький:
Если пользователь нажал или снял галочку - запускать нужную функцию, в которой будет if else с полученным bool значением от поля checked (статус галочек будет сохраняться в settings.ini восстанавливаться при загрузке).
« Последнее редактирование: Октябрь 01, 2019, 12:12 от nirraen » Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #3 : Октябрь 01, 2019, 12:13 »

может кто-нибудь дать пример простенький:

Qt Examples And Tutorials
Записан

Пока сам не сделаешь...
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Октябрь 01, 2019, 12:14 »

а что мешает переместить функцию из main.cpp в mainwindow.cpp? Улыбающийся

ну если не хочется, то можно в mainwindow.h или mainwindow.cpp объявить ее как
Код
C++ (Qt)
extern void EffectSK(bool x, QString wayEffectSK, QString AppWay);
и после этого сможешь ее вызывать внутри on_checkbox_effectsk_clicked.
Записан

Изучением 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
nirraen
Гость
« Ответ #5 : Октябрь 02, 2019, 09:42 »

а что мешает переместить функцию из main.cpp в mainwindow.cpp? Улыбающийся

ну если не хочется, то можно в mainwindow.h или mainwindow.cpp объявить ее как
Код
C++ (Qt)
extern void EffectSK(bool x, QString wayEffectSK, QString AppWay);
и после этого сможешь ее вызывать внутри on_checkbox_effectsk_clicked.

не получается переместить из main.cpp в mainwindow.cpp потому что QString wayEffectSK, QString AppWay - видно только в main.cpp =( т.е. передать в эту функцию эти значения я могу только из main.cpp =( я думаю из-за отсутствия знаний и опыта у меня не хватает пока ума понять как это реализовать)
А еще надо разобраться как работают сигналы.
Мне казалось всё сначала простым. Мол перешел к слоту и написал что сделать в случае true и что сделать в случае false, но из-за двух файлов
mainwindow.cpp и main.cpp теперь фиг знает как же описать эту функцию и где =(.

по сигналу с формы нужно запустить функцию void EffectSK(bool x, QString wayEffectSK, QString AppWay);
в X должно попасть положение true или false поля checked в Checkbox. так получается что сейчас это положение видно только в mainwindow.cpp.
а дальше идут действия с файлами в зависимости от этого положения. QString wayEffectSK, QString AppWay - это пути. Они известны в main.cpp
if (x==true) {.....}
else {.....}


upd: допёр как перенести функцию в mainwindows.cpp)). спасибо за идею. Делаю.


« Последнее редактирование: Октябрь 02, 2019, 09:58 от nirraen » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Октябрь 02, 2019, 11:54 »

да, очень сказывается отсутствие знаний в С/С++ Улыбающийся
Записан

Изучением 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
nirraen
Гость
« Ответ #7 : Октябрь 02, 2019, 12:04 »

Всё получилось. функция работает, написана в mainwindow.cpp.
Положение галочек сохраняются и подгружаются с файла после перезапуска.
Огромное спасибо за советы и ответы!

я просто изначально не понимал зачем вообще нужен mainwindow.cpp, если есть main.cpp, а оказывается оба используются и ничего в этом сверхъестественного нет. Просто вся работа на форме по-умолчанию осуществляется в mainwindow.cpp. По клику на "перейти к слоту".
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #8 : Октябрь 02, 2019, 12:20 »

Просто вся работа на форме по-умолчанию осуществляется в mainwindow.cpp.

При этом нужно понимать, что основная работа программы не должна быть сосредоточена в формах, они нужны только для взаимодействия с пользователем. Но это на отдалённое будущее Улыбающийся.
Записан

Пока сам не сделаешь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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