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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Срабатывание комбинации CTRL+C  (Прочитано 5590 раз)
Andrew12
Гость
« : Январь 23, 2012, 17:48 »

Здравствуй, многоуважаемый All.

Есть форма с двумя таблицами. Для копирования выделения любой из них в буффер, вешаю на каждую :
Код:
        QAction *action = new QAction(tablewidget);
        action->setShortcut( QKeySequence( Qt::CTRL + Qt::Key_C ) );
        tablewidget->addAction(action);
        QObject::connect(action, SIGNAL(triggered()), this, SLOT(slot_copyToClipboard()));

Так вот, непосредственно при нажатии CTRL+C консоль матюкается "QAction::eventFilter: Ambiguous shortcut overload: Ctrl+C". Я так понимаю это из-за того, что два раза определил QAction с такой комбинацией. Как выйти из положения?
« Последнее редактирование: Январь 24, 2012, 14:35 от Andrew12 » Записан
Странник
Гость
« Ответ #1 : Январь 23, 2012, 18:48 »

я перехватывал событие нажатия клавиши на таблице, переопределить эвент или фильтр поставить - неважно. но не буду утверждать, что это единственное или лучшее решение.
Записан
Kolobok
Гость
« Ответ #2 : Январь 23, 2012, 19:37 »

Код:
QShortcut *shortcut = new QShortcut(QKeySequence::Copy, tablewidget);
connect(shortcut, SIGNAL(activated()), this, SLOT(copySelection()));
Записан
Andrew12
Гость
« Ответ #3 : Январь 24, 2012, 11:43 »

В обоих случаях есть пока не решенные проблеммы:
1. Если Перехватывать eventFilter, то срабатывает стандартная операция копирования и только созданное содержимое буфера перезаписывается содержимым ячейки, в которой стоит курсор. Т.е. после EventFilter срабатывает Copy by Microsoft Windows и как его отключить непонятно.
2. Метод Shortcut работает отлично, за исключением случая, когда на форме лежит две таблицы. В таком случае создается 2 єкземпляра Shortcut и при нажатии на CTRL+C не срабатывает ни один.

Можете еще что-либо предложить?
Записан
mutineer
Гость
« Ответ #4 : Январь 24, 2012, 11:47 »

Стандартный copy срабатывает независимо от того, что возвращает фильтр?
Записан
Kolobok
Гость
« Ответ #5 : Январь 24, 2012, 13:16 »

2. Метод Shortcut работает отлично, за исключением случая, когда на форме лежит две таблицы. В таком случае создается 2 єкземпляра Shortcut и при нажатии на CTRL+C не срабатывает ни один.
не вызывается, потому что они без фокуса.
Записан
Andrew12
Гость
« Ответ #6 : Январь 24, 2012, 14:34 »

С EventFilter действительно не досмотрел. Для того, чтоб стандартный Copy от Microsoft Windows не срабатывал необходимо в EventFilter возвращать true.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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