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

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

Страниц: 1 ... 3 4 [5] 6   Вниз
  Печать  
Автор Тема: JS в приложении на Qt/Ком порты/ и прочие глупые вопросы  (Прочитано 34842 раз)
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #60 : Сентябрь 01, 2020, 08:35 »

Я очень вежлив вроде как ...


так далее я должен как я и говорил создавать свой класс от родителя QlineEdit и в нем расприватив KeyPress с ним работать ... хорошо то как тогда мой клас сунуть и расместить в дизайнере ?

я не понимаю почему у меня баня не через дорогу отраздивалки а в другом городе ? причем тут билдя VC все так же просто хоть и пишется руками но в дизайнере все можно раставить


в общем походу я сделал выводы по Qt и они т еже что и о QT ... просто столько проблем на ровном месте  в самой банальности .. я даже не знаюза чем еще может существовать Line Edit если не для обработки ввод...

единственная просьба можно такой пример от тебя "Панетр" получить в виде готовогопроекта функционал выше описан ... я погляжу на этои походу на этом закончу с Qt ....

за ранее приношу извенения за то что пришели нагадил ... но мои ожидания были совеншенно другими ...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #61 : Сентябрь 01, 2020, 09:35 »

Лови пример: левый эдит работает через сигнал/слот, правый через ивенты.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #62 : Сентябрь 01, 2020, 09:38 »

И еще советую почитать Крылова "Мартышка и очки". Крайне полезная басня.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #63 : Сентябрь 01, 2020, 10:22 »

так далее я должен как я и говорил создавать свой класс от родителя QlineEdit и в нем расприватив KeyPress с ним работать ... хорошо то как тогда мой клас сунуть и расместить в дизайнере ?
Вы упорно стремитесь к сценарию типа "дизайнер все делает, нужно только дописать небольшие "вкрапления" своего кода". В Qt этого нет, и это правильно. "Визуальное программирование" (или "формошлепство") - достаточно спорная вещь, хотя бы судя по этой теме Улыбающийся

Далеко не все, и не всегда, юзают Qt дизайнер. Начните "от печки", создайте окно, в нем виджеты. Отравняйтесь лайаутами. Добавьте "бизнес-логику" сигналами. Забудьте дизайнер и позорное слово "форма". Все прекрасно получится, без всякого наследования. Единственная трудность - пере/само оценка. Ведь Вы уже опытный программизд, а тут разбираться с "совершенно элементарными" вещами Улыбающийся

Вероятный вопрос: а зачем мне все это если сейчас я могу сделать то же в 100 раз быстрее? Ответ: ни к чему. Если нет др интересов кроме как клепать "формы" с пулеметной скоростью - Qt Вам не нужен.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #64 : Сентябрь 01, 2020, 13:01 »

Дизайнер хорош для простых форм, но для главного окна я часто наталкивался на ограничения.
Другое дело, что юзкейз автора делается и с дизайнером, он просто не к тому методы приконнектился потому что не разобрался в сигналах и эвентах.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #65 : Сентябрь 01, 2020, 13:14 »

Если очень хочешь "засунуть свой класс в дизайнер" создай на его основе плагин для дизайнера и будет тебе счастье.
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #66 : Сентябрь 02, 2020, 03:43 »

Лови пример: левый эдит работает через сигнал/слот, правый через ивенты.

ЕЩЕ РАЗ БОЛЬШОЕ СПАСИБО, за терпение и возюкание со мной ...
и так впринципе ты (надеюсь можно ) подтвердил то о чем я говорил ноне мог объяснить
либо я варю обработчик событий :
Код:
ui->lineEditEvents_->installEventFilter(this);

либо я вынужден отказаца от визуального редактора потом что все адекватные эвенты :

Седят в protected
ну или вытасукивать их через создание потомка класа и выуживанием в паблик эти эвенты ...

в общем то с чего начинался весьсрач просто толи я не мог норм задать вопрос толи это считается в Qt идельным решением и нормой ... как само сабой разумеющееся ...

в общем итог либо ты пишшеь много кода , либо отправляешь на свалку дизайнер и опять же таки пишешь много кода ...
и этоглавнейшая проблема Qt вообще даже страшнее отсутсвия сборки в один файл ... я все таки планирую по тихо продолжать смотрть в этомнаправлении но увы констатирую факт Qt на текущий момент является отсталой технологией не позволяющей :
1- делать быструю разработку
2- имеющую непонтнуб логику "оно есть - но чтобы взять надо выполнить квест походу которого вы чего то лишитесь"
3- отсутсвие встроенных средств сборки всего в 1 exe файл как я выяснил и в лине та же ботва , нужнотащить все либы за собой

про плюсы молчу ибо эти минусы просто сводят их на нет ...

готов к швырянию в меня какашками ...
И еще советую почитать Крылова "Мартышка и очки". Крайне полезная басня.
Басня хороша .. но не к месту ... тут скорее всего стоит вспомнить мультик "почему у льва большая грива"

так далее я должен как я и говорил создавать свой класс от родителя QlineEdit и в нем расприватив KeyPress с ним работать ... хорошо то как тогда мой клас сунуть и расместить в дизайнере ?
Вы упорно стремитесь к сценарию типа "дизайнер все делает, нужно только дописать небольшие "вкрапления" своего кода". В Qt этого нет, и это правильно. "Визуальное программирование" (или "формошлепство") - достаточно спорная вещь, хотя бы судя по этой теме Улыбающийся

Далеко не все, и не всегда, юзают Qt дизайнер. Начните "от печки", создайте окно, в нем виджеты. Отравняйтесь лайаутами. Добавьте "бизнес-логику" сигналами. Забудьте дизайнер и позорное слово "форма". Все прекрасно получится, без всякого наследования. Единственная трудность - пере/само оценка. Ведь Вы уже опытный программизд, а тут разбираться с "совершенно элементарными" вещами Улыбающийся

Вероятный вопрос: а зачем мне все это если сейчас я могу сделать то же в 100 раз быстрее? Ответ: ни к чему. Если нет др интересов кроме как клепать "формы" с пулеметной скоростью - Qt Вам не нужен.
Отвечаю на ваш вопрос,  я оч много лет работаю на фрилансе , как соло так и в рабочих группах последние года я немного переквалифицировался в Промышленногопрограмиста  но в свое время писал корпоративный софт
приведу тебе просто пример , софтина огромная 20 разных рабочих модулей (бухи, склад и прочее) я писал часть взаимодействия с SQL  тоесть прокладку работы с базой данных которая отслеживала  связи перекрестные ссылки ипрочее в общем вся движка ... я сделал и отладил это за 2 недели ... чувак другой писал отчеты конструктор и и прочее он это сделал за месяц ,  при этом каждый для себя накидывал интерфейс ... нетратят на это время ... а уже потом отдельный человек согласовывая с заказчиком разрабатывал то что тот хотел видеть розовые кнопочки и красивые темы ... и на это ушел год поделок и переделок и да это был VC а тамнет проблем с обработкой банальности Улыбающийся

так далее мне нет смысла тратить время на прописывания фигни ...

ну и возникает вопрос на кой ЛАД тогда нужен редактор если его использование не считатеся хорошим тоном и вообщ ене поддерживается  адекватно ?
почему фактически основное седит в привате ?

где логика ...
Дизайнер хорош для простых форм, но для главного окна я часто наталкивался на ограничения.
Другое дело, что юзкейз автора делается и с дизайнером, он просто не к тому методы приконнектился потому что не разобрался в сигналах и эвентах.
вы ошиблись я много програмирую в лине , правда все что я делаю обычно работает в консоли или демонами и оконного интерфейса там нет ...
подход с слотами мне знаком а про события я вообще молчу ... но чет я не помню чтобы хотьраз мне приходилось основопологающее событие из какой либо либы выуживать через отладчик ... (корявая аналогия с private) хотя конечно такое делал ... но скорее для развлекухи...
Если очень хочешь "засунуть свой класс в дизайнер" создай на его основе плагин для дизайнера и будет тебе счастье.
Могу ли я процетировать тебе то как дали ответ на такую рекомендацию на одном из англоязычных форумов ..
why don`t I then write my own libraries to bury Qt Непонимающий??

в общем я согласен ...  примерно если перевести то "почему бы мне не сделать свои либы чтобы похоронить Qt"

имеется в виду не использовать ...

Я еще раз извеняюсь если груб но подумайте самикак стыдно задаватиь такой вопрос и тепретька ктебятыкают в лоток с наполнителем ...
Отдельное спасибо Пантер`у единсвенный кто пытался помочь ...

p.s.и да сейчас 90 % времени уходит именно на создание интерфейса ... и увы если вы комерческий разработчик а не любитель вы это должны знать так как софт это  вопервыхтоварлецом а уж во вторых функционал

p.p.s Igors, а можнопару примеров софтины где в принципе не нужен интерфейс и клепание форм а 99% уходит именно на разработку кода процесса исполнения (игры не считаем ибо QT для этого вообще не торт) какойто спец сфот математика ? статистика ? сколько вы такого софта написали ?
« Последнее редактирование: Сентябрь 02, 2020, 03:48 от Faster » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #67 : Сентябрь 02, 2020, 07:22 »

Я до сих пор не понял, зачем тебе нужны ивенты. У QLineEdit есть набор сигналов, которые покрывают все юзкейсы использования, с которыми я сталкивался. Напиши мне конкретный кейс, который ты не можешь сделать на сигналах/слотах?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #68 : Сентябрь 02, 2020, 08:22 »

Кстати, после перехода с билдера на Qt я первые пару лет вообще не пользовался дизайнером, создавал все в коде, чтобы привить себе понимание того, как все это работает на самом дела. Потому что с Билдером я не знал ни что такое события, ни откуда они берутся, ни что такое event loop - я умел только мышкой натыркать контролов, стырить код из сборников FAQ, коих было немеряно и как-то это все запустить. Стоит ли говорить, что качество софта, а самое главное, качество моих знаний было чуть выше чем никакое. Это как php - ты можешь быстро клепать формы, но это не делает тебя программистом. Собственно, у ТС сейчас проблема - он пытается выбраться во взрослый мир из своего детского сада, где ему Билдер даже попу подтирает.
« Последнее редактирование: Сентябрь 02, 2020, 09:34 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #69 : Сентябрь 02, 2020, 08:44 »

Блин, тяжело читать тот поток сознания, да еще с кучей ошибок (это как бы неуважение ко всем кто будет читать это), брр.
Да и тему я бы перенес в "говорилку", т.к. смысла ей тут быть не вижу, т.к. она скатилась уже сами знаете куда.
Записан

ArchLinux x86_64 / Win10 64 bit
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #70 : Сентябрь 02, 2020, 10:27 »

Блин, тяжело читать тот поток сознания, да еще с кучей ошибок (это как бы неуважение ко всем кто будет читать это), брр.
Да и тему я бы перенес в "говорилку", т.к. смысла ей тут быть не вижу, т.к. она скатилась уже сами знаете куда.
Нет ни одного правила общения в форумах, который бы этот "программист" не нарушил. К доктору. Пантер, не трать на него своего времени, вдруг он здесь останется, и опять придется здесь видеть его "срач".
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #71 : Сентябрь 02, 2020, 11:33 »

Нет ни одного правила общения в форумах, который бы этот "программист" не нарушил. К доктору. Пантер, не трать на него своего времени, вдруг он здесь останется, и опять придется здесь видеть его "срач".
Вы чересчур строги, товарищ просто переоценивает свой опыт, ну этим грешат все. Увидев новую вещь, он требует/ожидает что она - такая же как та что он уже владеет. А если нет (а оно конечно нет) - то это говно. Логика очень простая.

p.s.и да сейчас 90 % времени уходит именно на создание интерфейса ... и увы если вы комерческий разработчик а не любитель вы это должны знать так как софт это  вопервыхтоварлецом а уж во вторых функционал
Я очень доволен что (во многом благодаря Qt) доля UI у меня менее 10% и я могу сосредоточиться на содержательной части.

p.p.s Igors, а можнопару примеров софтины где в принципе не нужен интерфейс и клепание форм а 99% уходит именно на разработку кода процесса исполнения (игры не считаем ибо QT для этого вообще не торт) какойто спец сфот математика ? статистика ? сколько вы такого софта написали ?
Сколько окон в моем теперешнем приложении - не считал, ну десятков 5 может будет. В основном это разнообразные редакторы, в которых юзер манипулирует с 3D объектами, напр покрасить объект "кисточкой". Конкретно сейчас занимаюсь переводом  операций выборки (picking) точек и полигонов с CPU на GPU. Формально - тоже UI, но никакого отношения к виджетам не имеет. Да, новые окна появляются, переделываются старые, но UI - наименьшая из проблем. Дело не в том "как сделать табличку", а в том "что в ней должно быть", т.е. ф-ционал

Другой проект (мой любимый) - чисто рендер. Там вообще 1 окно + диалог преференсов, вот и все UI.

Да, и замечание выше по поводу грамотности - поддерживаю. Если явно видно что человек писал "левым яйцом" (абы быстрее написать), то это быстро отбивает охоту ему отвечать.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #72 : Сентябрь 02, 2020, 14:00 »

либо я вынужден отказаца от визуального редактора потом что все адекватные эвенты :

Вам уже 10й раз пишут - вам не нужны эвенты, вам нужны сигналы. Нельзя сделать connect на эвент. Как нельзя сделать на переменную или макрос. Это разные сущности.
mousePressEvent(), mouseReleaseEvent() - это обработчик эвента (эвент - это объект, посылаемый другому объекту). Он низкоуровневый и туда надо лезть только если хнаешь что делаешь. Эти низкоуровневые обработчик испукают высокоуровные сигналы
clicked(), pressed(), released() к которым можно (и нужно) делать connect().
Сигнал-слоты - это механизм коллбеков, где слот - это ваш коллбек, а сигнал - специальная функция, которая вызывает все присоединенные коллбеки. Они даже называются по-другому, я не зря выделил жирным. Глагол в прошедшем времени - это имя сигнала к которому можно делать коннект. Всё иное - рандомная функция которую кто-то где-то зовет и к которой нельзя делать коннект.
Пока вы не поймете разницу между сигналами и обработчиками эвентов, вы далеко не уедете. Это разные сущности которые хоть и связаны, но выполняют разные задачи.
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #73 : Сентябрь 03, 2020, 02:20 »

Я до сих пор не понял, зачем тебе нужны ивенты. У QLineEdit есть набор сигналов, которые покрывают все юзкейсы использования, с которыми я сталкивался. Напиши мне конкретный кейс, который ты не можешь сделать на сигналах/слотах?
Давай поясню как я на это вышел . для утилки что янаписал нужна строчка куда человек должен  чтотописать
конкретно команды "аля консоль" , по скольку я приверженец простоты у человека при написании reg долно подсвечиваться register

к примеру первая задача .. вторая задача , это то же самое но терминальный режим мне нужен ввод символа нопечатать я собераюсь то тчо вернет устройство ..

на билде задача решается эвентом обработки нажатия клавиши где я делаю Send(sym); а её результат наоборот возвращаю как символ ...
все 2 строчки кода решают всю задачу
тут же я должен нарисовать пачку бестолкового кода ...

простота залог успеха ...

кстати поэтому поводу на англофорумах по Qt срачь нормальный и огромное количество тех тко не понимает почему так ... а не проще ... и есть ответ "так исторически сложилось" ...

вот смотри :
Код:
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if (watched == ui->lineEditEvents_) {
        auto ev = dynamic_cast<QKeyEvent*> (event);
        if (ev) {
            ui->labelEvents_->setText(ev->text());
        }
    }
}
и вот :
Код:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
this->Label1->Caption=Key;
}

Почуствуй разницу ... Use Less
Кстати, после перехода с билдера на Qt я первые пару лет вообще не пользовался дизайнером, создавал все в коде, чтобы привить себе понимание того, как все это работает на самом дела. Потому что с Билдером я не знал ни что такое события, ни откуда они берутся, ни что такое event loop - я умел только мышкой натыркать контролов, стырить код из сборников FAQ, коих было немеряно и как-то это все запустить. Стоит ли говорить, что качество софта, а самое главное, качество моих знаний было чуть выше чем никакое. Это как php - ты можешь быстро клепать формы, но это не делает тебя программистом. Собственно, у ТС сейчас проблема - он пытается выбраться во взрослый мир из своего детского сада, где ему Билдер даже попу подтирает.
Не мы говорим о разных вещах, я как бы и на Асемблере пишу ине поверишь даже с винждой общаться приходится , так что и как работает я в курсе ... писал ине раз процессына скорость расчитанные ... правда с каждым годом этовс еменее нужно ... а с учетомтого тчо я много пишу под линь дезайнер мне кабы вообще не нужен но он есть ... а значит ...

Блин, тяжело читать тот поток сознания, да еще с кучей ошибок (это как бы неуважение ко всем кто будет читать это), брр.
Да и тему я бы перенес в "говорилку", т.к. смысла ей тут быть не вижу, т.к. она скатилась уже сами знаете куда.
Тема перенесена так как в принципе онапотеряла своюактуальность ...
насчетнеуважения  .. приветпаря я "Дизлексик" сходи прочти что это такое потом можешь высказать свои соболезнования и прочее ... и пройтимимо


Нет ни одного правила общения в форумах, который бы этот "программист" не нарушил. К доктору. Пантер, не трать на него своего времени, вдруг он здесь останется, и опять придется здесь видеть его "срач".

срачь может быть из за таких как ты или казус или еще пары личностей, я бы в принципе не пришел даже иботочку вчера поставил ... пантер пояснил мне все что я хотел узнать ..
ну а ты видимо настолькогениален что не в силах этого сделать..

Igors, поздравляю вы те 10 % которымтакое прошло ... а теперь представь что у тебя 400 форм в 20 разных функциональных модулях ...
и 90% г...о UI, и все твои плюсы валятся в минусы .. банас то ХДЕ ...

и да не разу не писал ничегодля бизнеса с 3д Улыбающийся так баловался директом но по сутине разу не потребовлаось

Авварон, спаисбо панетр все обьяснил и я все понял но вы не поняли что я ищу "не как сделать" а ответ на вопрос "в чем логика" ..


все предлогаю тему закрыть и жахнуть ибо не отвечатьна срачь я не могу , а развозитьего далее нет смысла ... выводы я сделал прочел 2 книги ... наладился "логикой" из плюслов увидел адекватного человека ... я доволен

Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #74 : Сентябрь 03, 2020, 02:43 »

ответ на вопрос "в чем логика" ..


Логика в том что эвент посылается объекту. Например QMouseEvent посылается виджету под мышкой, а QKeyEvent - объекту в фокусе. Ключевое - объект всегда известен.
Сигнал же посылается "в никуда" - когда кнопка эмитит сигнал pressed() она не знает кто к ней приконнекчен, сколько их и приконнекчен ли кто-то. Она просто посылает сигнал. Если есть подписчики - хорошо, нет подписчиков - тоже хорошо. Таким образом обеспечивается разделение интерфейсов объектов - у одного объекта есть сигналы, у другого - слоты и они друг о друге вообще ничего не знают.
Можно ли сделать это на эвентах? Можно - объект мог бы посылать сам себе эвент QClicked а мы бы его ловили через эвент фильтр. Но это неудобно, потому что вместо функции с нулем-двумя параметрами пришлось бы делать миллиард мелких структур-событий.
Посмотрите на количество сигналов у некоторых классов и прикиньте если бы на каждый метод была бы своя структура.
« Последнее редактирование: Сентябрь 03, 2020, 02:55 от Авварон » Записан
Страниц: 1 ... 3 4 [5] 6   Вверх
  Печать  
 
Перейти в:  


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