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

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

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

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #45 : Август 28, 2020, 09:34 »

или я чтото не догнал Непонимающий
Вот он, один из главных тормозов после C++Builder, в в дизайнере которого такие вещи делаются одним кликом Улыбающийся
В Qt в дизайнере нужно создать действие QAction, в классе формы описать слот, в котором будут выполняться нужные операции, и соединить сигнал действия со слотом, например:
Код
C++ (Qt)
connect(actionConnect, &QAction::triggered,   this, &MainWindow::connectSlot);
Немного дольше, но неизмеримо гибче Подмигивающий
ПРОСТИ но не мог ли ты прочесть еще раз мой вопрос и четко понять что речь идет не о ТРИГГЕТ а о нажатии кнопки !!!
ибо то что ты сказалнаходится в ПАБЛИКЕ !
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


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


Просмотр профиля
« Ответ #46 : Август 28, 2020, 12:11 »

Ну, попутал немного Подмигивающий "и незачем так орать я и в первый раз прекрасно слышал" )).
Код
C++ (Qt)
connect(ui->pushButton, &QPushButton::pressed, this, &MainWindow::onPressSlot);
Записан

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

Сообщений: 2812


Просмотр профиля
« Ответ #47 : Август 28, 2020, 13:59 »

Вы уже поспели, сливы?
Очень ты нетерпеливый!
Ну зачем же каждый час
Спрашивать об этом нас?
(С)

 Смеющийся

Читай книжки, за 20 лет мало что-то прочитал!
Записан

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #48 : Август 28, 2020, 16:45 »

Читай азы "Жасмин
Ах, ностальгия  Улыбающийся
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #49 : Август 31, 2020, 03:01 »

Тяжко да тяжко ...

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

Вот сам косяк :


в связи с чем задаю вопрос , МНЕ НУЖНО ДЕЛАТЬ СВОЮ ОБЕРТКУ И ДОСТАВАТЬ ВСЕ ЭТИ СОБЫТИЯ из private НепонимающийНепонимающий

или есть другой , адекватный способ?

походу не умею я задавать глупые вопросы ...  но надеюсь вышло ...

p.s. вчера за вечер на билде софтину наваял ... теперь чисто принципиально про Qt ... очень уж интересно понять женскую логику ...
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #50 : Август 31, 2020, 03:12 »

Я так походу нашел ответ на свой во прос и да в ДИЗАЙНЕРЕ нет никакой возможности сделать реакцию для стандартного компонента на нажатие кнопок .. ибо это считатется в Qt так сказать редко используемыми функциями ...
Цитировать
Вам может потребоваться переопределить несколько менее распространенных обработчиков событий:

mouseMoveEvent() возникает, когда мышка перемещается с нажатой кнопкой. Это может быть полезно при выполнении операции перетаскивания. Если вы вызвали setMouseTracking(true), вы будете получать события перемещения мыши, даже если ее кнопка не нажата.
keyReleaseEvent() возникает, когда клавиша отпущена и пока она нажата (если это клавиша с автоповтором). В этом случае виджет получит два события об отпускании и нажатии клавиши для каждого повтора. Нажатие клавиши Tab и сочетания Shift+Tab передается виджету только если он не использует механизм смены фокуса. Для перехвата нажатия этих клавишей вы должны переопределить QWidget::event().
wheelEvent() возникает, если пользователь вращает колесико мыши в то время, как виджет получил фокус.
enterEvent() возникает, когда мышка попадает в пространство, занимаемое виджетом на экране (исключая пространство, занятое дочерними виджетами).
leaveEvent() возникает, когда мышка покидает пространство виджета. Когда мышка переходит в пространство, занимаемое дочерним виджетом, событие leaveEvent() не происходит.
moveEvent() возникает, когда виджет перемещается относительно своего родителя.
closeEvent() возникает, когда пользователь закрывает виджет (или когда вызывается функция close()).

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

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #51 : Август 31, 2020, 07:14 »

У тебя немного недопонимание основных механизмов. В Кьюте мы не используем ивенты обычно, они нужны для других нужд. Тут принято использовать сигналы/слоты. Каждый компонент или класс описывает свои сигналы, на которые и можно законнектиться. Сигналы всегда публичные. Если у тебя нет необходимого сигнала, есть два пути:
1. Отнаследоваться от нужного компонента, переопределить обработчик ивента, определить нужный сигнал, заэммитить этот сигнал.
2. Добавить на этот компонент eventFilter и в обработчике сделать то, что тебе надо.

Еще раз напоминаю - не забывай про наследование, нужный тебе сигнал может быть выше по иерархии.
Записан

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

Сообщений: 11445


Просмотр профиля
« Ответ #52 : Август 31, 2020, 07:29 »

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

p.s. вчера за вечер на билде софтину наваял ... теперь чисто принципиально про Qt ... очень уж интересно понять женскую логику ...
А зачем? Если на (де)билдере все так прекрасно - ну и живите там

У тебя немного недопонимание основных механизмов. В Кьюте мы не используем ивенты обычно,
Не надо его кормить с ложечки, этим Вы только поощряете лень и тупость.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #53 : Август 31, 2020, 07:37 »

Igors, я сам перешел с билдера много лет назад, мне было тяжело, я еще лет 5 потом из себя выкореживал те паршивые подходы, которые прививает билдер. Я тогда прочитал весь этот форум, чтобы научиться Кьюту. Но, блин, я не работал программистом и мог это себе позволить (когда тебе 20 у тебя больше свободного времени, чем когда тебе 30+ и семья), а когда тебе нужно деньги зарабатывать, тут приходится иногда тупить и лезть на форумы с дебильными вопросами в надежде, что хоть кто-то тебе поможет.
Записан

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

Сообщений: 11445


Просмотр профиля
« Ответ #54 : Август 31, 2020, 08:51 »

Хмм.. ну не знаю, мое знакомство с Qt напротив, было легким и приятным. Месяца за 2 (без отрыва от производства) я вполне освоил, "в первом приближении" конечно. Ну слоты-сигналы - я их не люблю, но что там может быть неясно Непонимающий С таким букварем, и не разобраться - это надо уметь. Обычная история - не хочет читать, на что рассчитывает - хз, никакой форум не заменит доку, форумы для этого не предназначены. В любом случае это чисто его проблемы.

Хотя конечно
Цитировать
Учиться легко - переучиваться трудно
Он же там на билдере уже все постиг..
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


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


Просмотр профиля
« Ответ #55 : Август 31, 2020, 10:07 »

и так хочу мониторить событие нажатия на кнопку и получать символ и модификаторы, в поле lineEdit  
...
походу не умею я задавать глупые вопросы ...  но надеюсь вышло ...
Не вышло.. Приходится догадываться: вы хотите при нажатии кнопки получить значения клавиш-модификаторов и текст из строчного редактора? Тогда, посмотрите, наконец мой пример.
Код
C++ (Qt)
void MainWindow::onPressSlot() {
   int key = QApplication::keyboardModifiers ();
   ui->label->setText(QString("Pressed button with %1. Text: %2").arg(key, 0, 16).arg(ui->lineEdit->text()));
}
 
2all - человек, видимо, сильно переработал, или к доктору...
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Faster
Новичок

Offline Offline

Сообщений: 45


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

Igors, пройдите мимо вы флудите , я прочел 2 книги забавный пример там есть как у окна опрашивать клавиши  но вот с окном проще ты и так конструктор пишешь ... а вы так и не вкурили в вопрос .. пройдите мимо

Igors, я сам перешел с билдера много лет назад, мне было тяжело, я еще лет 5 потом из себя выкореживал те паршивые подходы, которые прививает билдер. Я тогда прочитал весь этот форум, чтобы научиться Кьюту. Но, блин, я не работал программистом и мог это себе позволить (когда тебе 20 у тебя больше свободного времени, чем когда тебе 30+ и семья), а когда тебе нужно деньги зарабатывать, тут приходится иногда тупить и лезть на форумы с дебильными вопросами в надежде, что хоть кто-то тебе поможет.
Ну ситуация почти верно описана , в действительности я натекущий момент могу уделять не боле 1-2 часа в день ... так как на текущий момент я не вижу никаких приемуществ в Qt и вообще не разу не встречался с требованием заказчика о разработке именно на Qt он мне нужен как длинный хвост ёжику , но по скольку япишу на всем и стараюсь знать все среды решил заняться данным вопросом темболее есть проект кторый нужносделать кновому году срок большой прога мелкая и уже н аписнаа страховочная версия на билдях ... но оч хочется это сделать на Qt чтоб ы оценить разницу...

и так хочу мониторить событие нажатия на кнопку и получать символ и модификаторы, в поле lineEdit  
...
походу не умею я задавать глупые вопросы ...  но надеюсь вышло ...
Не вышло.. Приходится догадываться: вы хотите при нажатии кнопки получить значения клавиш-модификаторов и текст из строчного редактора? Тогда, посмотрите, наконец мой пример.
Код
C++ (Qt)
void MainWindow::onPressSlot() {
   int key = QApplication::keyboardModifiers ();
   ui->label->setText(QString("Pressed button with %1. Text: %2").arg(key, 0, 16).arg(ui->lineEdit->text()));
}
 
2all - человек, видимо, сильно переработал, или к доктору...

Спасибо но это почти пример из книги ...

я еще раз попробую задать вопарос ... но уже прям на уровне форума по VBS

И да хочу это все сделать в ДИзайнере
1- создать форму
2- положить на нее Lineedit / Text и пофиг что но первое предпочтительнее
3- написать обработчик "СЛОТА"/события нажатия клавиш в нутри , к примеру я хочу запретить вводить символ "Q" ну и по пути нажатую кнопку писать в label

Все ... и главное все через дизайнер
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


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

В общем нашел ответ тут : https://stackoverrun.com/ru/q/7443050

Но судя по ветке там обсуждается Qt4

Вопрос в текущем релиз еточно та же проблема осмотра гланд через анальное отверстие ?

получается что ядолженписать "фильтр" глоьбальный обработчик событий и миллион кода "банальности" своими ручками , тогда вопрос на кой Х...Р вообще данный IDE?

Ведь самая важна ясуть это наглядное планирование дизайна ?...


Я еще раз задаю вопрос МОЖЕТ Я ЧТОТО НЕ ЖДОГНАЛ ... но яуже прочел 2 книги , перерыл пачку форумов на руском (почти вс ебестолку) и стопку на языке шекспира ...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

Тебя сбивает  с толку Билдер - дизайнер нужен только для того, чтобы "нарисовать" интерфейс. То поведение, которое тебе нужно, к нему никак не относить - это логика приложения, которая должна быть написано тобой. Билдер делал это за тебя, и скрывал от тебя все то, что делал. Тут же ты получаешь полный контроль, но и писать придется немного больше. В Qt3 в дизайнере можно было писать код - но от этого отказались ибо это неправильный подход.
Записан

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

Сообщений: 5876


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


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

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 2 3 [4] 5 6   Вверх
  Печать  
 
Перейти в:  


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