Автор Тема: Qt+глобални клавиши за бърз достъп (shortcut keys)  (Прочетена 2698 пъти)

VG

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Slackware 10.0; Qt 3.3; MySQL 4.1.6

Значи, проблема е следният:
Как да накараме клавиш за бърз достъп да бъде активен във всички области на приложението?
Пробвах с "installEventFilter()" в QMainWindow но там, където имам таблици от вида QDataTable* в child widget-ите не работи.
Ако някой се е сблъсквал с подобен проблем нека сподели.
Активен

plamen_t

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
Ами честно казано хората, който разбират от Qt  в България са изключително малко за съжаление. '<img'>
Аз лично започнах да уча Qt преди няколко месеца, но въобще не мога да твърдя, че разбирам толкова, че да давам съвети.

Ето защо бих ти препоръчал да питаш в http://www.qtforum.org .
Отговарят почти веднага на постовете. Лично аз съм питал там по 2-3 въпроса, който бяха решени за нула време, тъй че опитай там   '<img'>
Активен

VG

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Цитат (plamen_t @ Април 11 2005,16:42)
Ами честно казано хората, който разбират от Qt  в България са изключително малко за съжаление. '<img'>
Аз лично започнах да уча Qt преди няколко месеца, но въобще не мога да твърдя, че разбирам толкова, че да давам съвети.

Ето защо бих ти препоръчал да питаш в http://www.qtforum.org .
Отговарят почти веднага на постовете. Лично аз съм питал там по 2-3 въпроса, който бяха решени за нула време, тъй че опитай там   '<img'>

Бих питал ама... знам, че ще се изложа с английския:-(
Активен

Michael

  • Напреднали
  • *****
  • Публикации: 39
    • Профил
Така зададен въпроса, ме кара да гадая, какъв точно ти е проблема и тъй като се занимавам с Qt на достатъчно ниско ниво, ще се опитам да ти помогна.
Значи, като принципна постановка, трябва да имаш предвид, че всички библиотеки за създаване на GUI, обработват сигналите от клавиатурата едва след като съответния прозорец е получил фокуса. Qt не прави изключение от това правило. Класа QDataTable наследява класа QTable, който пък е наследник на QWidget, това означава че можеш спокойно да използваш функцията на QWidget setFocus(), освен това трябва да направиш някаква функция за обработка на сигналите от клавиатурата, т.е да включиш keyPressEvent(QKeyEvent *e). Понеже не разбрах какво имаш предвид под "горещи клавиши", предполагам че са някава комбинация от клавишите Shift, Ctrl или Alt и някакъв друг клавиш, затова такава комбинация се обработва на два етапа 1.Определяш дали някой от горните клавиши е натиснат (е->state() - определя дали е натиснат или не "true", "false", e->key() - код на клавиш който не е символ, e->ascii() - за букви или цифри). Не съм сигурен че това ще ти свърши някаква работа, но мисля че като за стартов момент става !
Успех !
Михаил Петров
Активен

VG

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Извинявам се на всички, които не са ме разбрали, за недостатъчното обяснение.
В конкретния случай става въпрос за следното:
В момента работя върху складов софтуер за Линукс.
В разработката съм интегрирал и калкулатор, като целта ми е той да бъде извикван навсякъде в програмата с един или комбинация от два и повече клавиши (много е удобно). Както вече писах пробвах да задам на функцията, която извиква калкулатора глобален клавиш:
Примерен код

 myAccel = new QAccel(this, "myAccel");
 myAccel->insertItem(Qt::Key_F12, 101);

и след това заложих филтър за следене на събитията в дъщерните widget-и
Примерен код

bool myMainWindow::eventFilter( QObject *obj, QEvent *ev )
{
   if ( ev->type() == QEvent::Accel ){
      QKeyEvent *k = (QKeyEvent *)ev;
      if( k->key() == Key_F12 ){
         Calculator();
         return FALSE;
      }
   }
   return QMainWindow::eventFilter( obj, ev );
}

и съответно:
Примерен код

myChildWidget->installEventFilter(this);

по същия начин процедирах и в child widget-ите, там където се налага.
Работата обаче е там, че в едни случаи филтъра прихваща събитието като от вида QEvent::Accel, в други като QEvent::KeyPress, а в трети като бог знае какво:-(
Така или иначе това не проработи и засега се налага да помислим върху нещо друго.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
shortcut-и
Настройка на програми
Warstomp 7 2972 Последна публикация Jun 02, 2003, 14:14
от KNK
Shortcut pod KDE?
Настройка на програми
bella_ross 3 1952 Последна публикация Apr 12, 2004, 08:48
от Teo
Проблем със Shortcut keys
Настройка на програми
plamen_t 0 1530 Последна публикация May 08, 2005, 11:30
от plamen_t
modifier keys
Настройка на програми
HarleyBG 2 1784 Последна публикация May 12, 2005, 18:51
от HarleyBG
Странни shortcut keys в Xubuntu
Настройка на програми
yavorpap 3 2152 Последна публикация Jan 03, 2009, 01:28
от yavorpap