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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как связать клик "Shift+<arrow-up>" в ListWidget'е c заданным слотом  (Прочитано 4458 раз)
Astrologer
Гость
« : Декабрь 28, 2010, 16:04 »

Всех с наступающим!!
Собственно вопрос. Подскажите пожалуйста. Заранее благодарен.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Декабрь 28, 2010, 16:18 »

см. QShortcut
Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Декабрь 28, 2010, 16:39 »

Цитировать
Спасибо. Пишу из потомка QListWidget:
Ну дык коли из потомка, то кто мешает перегрузить QListWidget::keyPressEvent()?
Записан

Qt 5.11/4.8.7 (X11/Win)
Astrologer
Гость
« Ответ #3 : Декабрь 28, 2010, 16:53 »

Спасибо. Разбираюсь потихоньку.

Код
C++ (Qt)
void QTreeCheckable::keyPressEvent(QKeyEvent* event)
{
   switch(event->key())
    {
   case (Qt::Key_Shift + Qt::Key_Up):
       swapUp();
       break;
 
   }
}
 

Не хочет компилиться.
« Последнее редактирование: Декабрь 29, 2010, 10:37 от Astrologer » Записан
Fat-Zer
Гость
« Ответ #4 : Декабрь 28, 2010, 17:52 »

Код
C++ (Qt)
 if(event->modifiers()==Qt::ShiftModifier && event->key()==Qt::Key_Up)
   swapUp();
 
Как-то так...
Записан
Astrologer
Гость
« Ответ #5 : Декабрь 29, 2010, 10:36 »

Не хочет компилиться из за того, что говорит что keyPressEvent не определен.
Код
C++ (Qt)
D:/my_projects/DBFProject/qtreecheckable.cpp:16: error: no 'void QTreeCheckable::keyPressEvent(QKeyEvent*)' member function declared in class 'QTreeCheckable'
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Декабрь 29, 2010, 10:45 »

Покажи как наследуешься и как определяешь keyPressEvent.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Astrologer
Гость
« Ответ #7 : Декабрь 29, 2010, 11:28 »

Теперь работает. Просто в хедере не определил keyPressEvent(...). Вот так работает.
Код
C++ (Qt)
void QTreeCheckable::keyPressEvent(QKeyEvent* event)
{
   switch(event->key())
    {
    case (Qt::Key_Up):
       swapUp();
       break;
    case (Qt::Key_Down):
            swapDown();
            break;
   }
}
 

Хочу сделать теперь чтоб с зажатым Shift работало, пишу так, но не работает пока:
Код
C++ (Qt)
void QTreeCheckable::keyPressEvent(QKeyEvent* event)
{
   switch(event->key())
    {
    case (Qt::Key_Up && Qt::ShiftModifier):
       swapUp();
       break;
    case (Qt::Key_Down):
            swapDown();
            break;
   }
}
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #8 : Декабрь 29, 2010, 11:35 »

Код
C++ (Qt)
void QTreeCheckable::keyPressEvent(QKeyEvent* event)
{
   switch(event->key())
    {
    case (Qt::Key_Up):
       if (event->modifiers() & Qt::ShiftModifier) {
               swapUp();
       }
       break;
    case (Qt::Key_Down):
            swapDown();
            break;
   }
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Astrologer
Гость
« Ответ #9 : Декабрь 29, 2010, 11:38 »

Работает!  Улыбающийся Всем большое спасибо. С Наступающим Новым Годом!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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