Название: обработка события в Checkbox Отправлено: nirraen от Октябрь 01, 2019, 11:19 Здравствуйте, подскажите, пожалуйста.
Пример из Delphi. Есть форма. На ней Checkbox. Если кликнуть два раза, автоматически перебрасывает в редактор кода с заготовленным шаблоном. И можно начать писать код под событие клика по Checkbox. аналогичная ситуация, но в Qt. Есть форма. На ней Checkbox. Если пользователь поставит галочку или уберет запустить соответствующий код на исполнение, вопрос куда копать, что читать? Название: Re: обработка события в Checkbox Отправлено: kambala от Октябрь 01, 2019, 11:29 правой кнопкой на Checkbox — go to slot — дважды кликнуть на нужный сигнал (скорее всего, это будет clicked(bool))
Название: Re: обработка события в Checkbox Отправлено: nirraen от Октябрь 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: может кто-нибудь дать пример простенький: Если пользователь нажал или снял галочку - запускать нужную функцию, в которой будет if else с полученным bool значением от поля checked (статус галочек будет сохраняться в settings.ini восстанавливаться при загрузке). Название: Re: обработка события в Checkbox Отправлено: ViTech от Октябрь 01, 2019, 12:13 может кто-нибудь дать пример простенький: Qt Examples And Tutorials (https://doc.qt.io/qt-5/qtexamplesandtutorials.html) Название: Re: обработка события в Checkbox Отправлено: kambala от Октябрь 01, 2019, 12:14 а что мешает переместить функцию из main.cpp в mainwindow.cpp? :)
ну если не хочется, то можно в mainwindow.h или mainwindow.cpp объявить ее как Код и после этого сможешь ее вызывать внутри on_checkbox_effectsk_clicked. Название: Re: обработка события в Checkbox Отправлено: nirraen от Октябрь 02, 2019, 09:42 а что мешает переместить функцию из main.cpp в mainwindow.cpp? :) ну если не хочется, то можно в mainwindow.h или mainwindow.cpp объявить ее как Код и после этого сможешь ее вызывать внутри 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)). спасибо за идею. Делаю. Название: Re: обработка события в Checkbox Отправлено: kambala от Октябрь 02, 2019, 11:54 да, очень сказывается отсутствие знаний в С/С++ :)
Название: Re: обработка события в Checkbox Отправлено: nirraen от Октябрь 02, 2019, 12:04 Всё получилось. функция работает, написана в mainwindow.cpp.
Положение галочек сохраняются и подгружаются с файла после перезапуска. Огромное спасибо за советы и ответы! я просто изначально не понимал зачем вообще нужен mainwindow.cpp, если есть main.cpp, а оказывается оба используются и ничего в этом сверхъестественного нет. Просто вся работа на форме по-умолчанию осуществляется в mainwindow.cpp. По клику на "перейти к слоту". Название: Re: обработка события в Checkbox Отправлено: ViTech от Октябрь 02, 2019, 12:20 Просто вся работа на форме по-умолчанию осуществляется в mainwindow.cpp. При этом нужно понимать, что основная работа программы не должна быть сосредоточена в формах, они нужны только для взаимодействия с пользователем. Но это на отдалённое будущее :). |