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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Shortcut читатель  (Прочитано 3172 раз)
Flakes
Гость
« : Октябрь 26, 2009, 04:27 »

Сорри за кривое название топика. Это скрин из дизайнера:


Как вот такое поле реализовывается? Оно считывает нажатые клавишы.
Записан
Vexator
Гость
« Ответ #1 : Октябрь 26, 2009, 05:22 »

void setShortcut ( const QKeySequence & key )
Записан
spirit
Гость
« Ответ #2 : Октябрь 26, 2009, 10:19 »

используй QKeyEvent + QKeyEvent::text.
Записан
Flakes
Гость
« Ответ #3 : Октябрь 26, 2009, 21:27 »

Не особо догадываюсь что с этим делать, но попробую. Спасибо!
Записан
spirit
Гость
« Ответ #4 : Октябрь 26, 2009, 21:32 »

установи ивент фильтр на лайнЭдит и отлавливае QKeyEvent,
а затем устанавливай текст в лайнЭдит.
Записан
Flakes
Гость
« Ответ #5 : Октябрь 29, 2009, 04:13 »

Может кому пригодится.
Код
C++ (Qt)
void MyWidget::keyPressEvent(QKeyEvent *e)
{
int keyInt = e->key();
QString seqStr = QKeySequence(e->key()).toString();
if ( seqStr.isEmpty() ||
keyInt == Qt::Key_Control ||
keyInt == Qt::Key_Alt || keyInt == Qt::Key_AltGr ||
keyInt == Qt::Key_Shift
)
{
return;
}
QStringList strSequence;
if (e->modifiers() & Qt::ControlModifier)
strSequence << "Ctrl";
if (e->modifiers() & Qt::AltModifier)
strSequence << "Alt";
if (e->modifiers() & Qt::ShiftModifier)
strSequence << "Shift";
QMessageBox::information(this,
"QKeySequence", strSequence.join(" + ") +
(strSequence.isEmpty() ? "" : " + ") +
seqStr);
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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