Название: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: brucemax от Декабрь 01, 2011, 15:42 Клик по кнопке коннектится со слотом:
Код: void okno::Down() но пока этого не присходит.. видимо в sendEvent в качестве получателя я нето что надо пишу... Подскажите решение? Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 01, 2011, 19:29 a setFocus не устраивает?
Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 02, 2011, 07:03 to andrew.k
setFocus надо обрабатывать, определять какая кнопка ниже, перенаправлять на ту кнопку. А вот если передать событие нажатия - тогда все это (причем по умолчанию), рассчитает виджет. По теме: Пытался когда то съимитировать нажатия клавиш, но не преуспел к сожалению. Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 02, 2011, 08:55 Может твоей кнопке на форме нужно поставить FocusPolicy NoFocus?
Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 02, 2011, 08:59 А каким местом политика фокуса имеет к имитации нажатия клавиши?
Задача поставленная ТС - при щелчке на кнопку имитировать нажатие "вниз" на клавиатуре. Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 02, 2011, 08:59 Цитировать void okno::Down() Просто супер)Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 02, 2011, 09:00 А каким местом политика фокуса имеет к имитации нажатия клавиши? А ты подумай головой.Задача поставленная ТС - при щелчке на кнопку имитировать нажатие "вниз" на клавиатуре. Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 02, 2011, 09:03 andrew.k мб вам стоит подумать?
При нажатии клавиши фокус уже появляется на ней. Если между pressed и released нажать вниз, то "О чудо", курсор упадет вниз на следующий элемент. И это с нормальным фокусом. С NoFocus как раз фокус то придется делать самому, чтобы перейти на 1 элемент ниже. м? // PS данное утверждение протестировано [12/2/2011 Bepec] Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 02, 2011, 09:15 Верес, ты знаешь, практически в каждом твоем сообщении я либо не вижу смысла, либо не могу его понять, либо не могу его понять с первого раза. Это сообщение не исключение.
Это только у меня так? Не знаю, что ты там проверял, но если он коннектится к сигналу clicked(), то по щелчку фокус будет переходить на эту кнопку "вниз". а по доставке события - на следуйщий элемент, которым будет уже явно не тот. И после каждого щелчка фокус будет на одном и том же виджете. Если он коннектится к pressed, то фокус сначала перейдет как надо, а потом виджет в любом случае должен среагировать на щелчек и выставить себе фокус. И будет это скорее всего после того, как был выставлен нужный фокус. Поэтому в этом случае в результате фокус останется на самой кнопке "вниз". Поэтому нужно NoFocus, чтобы кнопка не принимала фокус по щелчку по ней. м? Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 02, 2011, 09:50 to adnrew.k:
Каюсь, прочитал заголовок темы, потом еще раз прочитал, потом только понял что хотел сказать ТС (Моя вина - что не понял, его вина - что не расписал) Согласен с вашим Qt::NoFocus. /*Прости меня, Васенька, дуру грешную!*/ to brucemax: Собственно что вы хотите сделать, распишите, а мы более оптимальный вариант предложим. Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: brucemax от Декабрь 02, 2011, 10:18 Видимо из-за того что я новичёк.. слова Вереса мне больше понятны))
Спасибо за полемику.. задача решена иным способом=) Но симулировать нажатие клавиши Up так и не удалось.. а вот симуляция нажатия символьной клавиши и вывод например в лайнэдит.. это легко) Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: brucemax от Декабрь 02, 2011, 10:24 А сделал так.. радиобатаны которые нажимаются по нажатии на кноПку на форме (как и по нажатию на "Down" ) объединил в массив.. а кноПка коннектится со слотом:
Код: void okno::Down() Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 02, 2011, 10:26 Молодца что то похожее предлагал и andrew.k.
Теперь переименуй тему(переименовать 1 твое сообщение заголовок Тема) в [РЕШЕНО]название темы. :) Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 02, 2011, 17:29 Молодца что то похожее предлагал и andrew.k. Я такое не предлагал.Проверил. Действительно почему-то событие с Qt::Key_Down/Up не дают нужного эффекта. Событие доходит, но виждет его игнорирует. и фокус не перемещается, когда вроде бы должен. Интересно почему? Qt::Key_Tab работает. Сильные форума сего. Поясните) В любом случае. не все контролы по стрелкам отдают фокус. По таб да большинство. По стрелкам нет. Поэтому зачем делать такой механизм? Пользователю проще щелкнуть на нужный контрол, чем щелкать на некую кнопку, чтобы фокус перешел от одного к другому. Бред же. Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 05, 2011, 07:06 Видимо это заготовка на будущее. У меня подобное используется в табличных представлениях - чтобы двигать туды сюды, но правда не таким извращенным способом :)
Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 05, 2011, 08:15 Видимо это заготовка на будущее. У меня подобное используется в табличных представлениях - чтобы двигать туды сюды, но правда не таким извращенным способом :) о чем это сообщение и к чему?Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 05, 2011, 08:29 Возможно для тебя будет открытием, что зачастую сначала пишется маленькая программа, в которой программист пытается сделать одно действие разными способами :)
Какой способ ему понравится и/или подойдет ему, тот способ он будет использовать в более больших проектах в дальнейшем. Это и есть заготовка. PS Помоему у тебя что то с восприятием действительности... Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: andrew.k от Декабрь 05, 2011, 08:36 Возможно для тебя будет открытием, что зачастую сначала пишется маленькая программа, в которой программист пытается сделать одно действие разными способами :) Да, у меня с шизофазиками туго.Какой способ ему понравится и/или подойдет ему, тот способ он будет использовать в более больших проектах в дальнейшем. Это и есть заготовка. PS Помоему у тебя что то с восприятием действительности... Название: Re: Симуляция нажатия клавиши клавиотуры Отправлено: brucemax от Декабрь 05, 2011, 09:38 В любом случае. не все контролы по стрелкам отдают фокус. По таб да большинство. По стрелкам нет. Поэтому зачем делать такой механизм? Пользователю проще щелкнуть на нужный контрол, чем щелкать на некую кнопку, чтобы фокус перешел от одного к другому. Бред же. То устройство, на котором будет работать программа не имеет мыши и полноценной клавиатуры (только 8 кнопок).=) Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 05, 2011, 09:43 Аналогичная проблема и у меня была. Только программа для панельных компьютеров :)
Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: brucemax от Декабрь 05, 2011, 10:36 Аналогичная проблема и у меня была. Только программа для панельных компьютеров :) И как решал её, если не секрет? :)Название: Re: [РЕШЕНО] Симуляция нажатия клавиши клавиотуры Отправлено: Bepec от Декабрь 05, 2011, 10:54 Сделал все в View, с раскрытием доп виджета уже с установками (т.е. строчки с названиями настроек, движение вверх вниз по таблице, двойное нажатие - открытие всех установок.)
Но был еще вариант с WinApi. keybd_event |