Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Andrew12 от Января 23, 2012, 17:48



Название: [РЕШЕНО] Срабатывание комбинации CTRL+C
Отправлено: 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 с такой комбинацией. Как выйти из положения?


Название: Re: Срабатывание комбинации CTRL+C
Отправлено: Странник от Января 23, 2012, 18:48
я перехватывал событие нажатия клавиши на таблице, переопределить эвент или фильтр поставить - неважно. но не буду утверждать, что это единственное или лучшее решение.


Название: Re: Срабатывание комбинации CTRL+C
Отправлено: Kolobok от Января 23, 2012, 19:37
Код:
QShortcut *shortcut = new QShortcut(QKeySequence::Copy, tablewidget);
connect(shortcut, SIGNAL(activated()), this, SLOT(copySelection()));


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

Можете еще что-либо предложить?


Название: Re: Срабатывание комбинации CTRL+C
Отправлено: mutineer от Января 24, 2012, 11:47
Стандартный copy срабатывает независимо от того, что возвращает фильтр?


Название: Re: Срабатывание комбинации CTRL+C
Отправлено: Kolobok от Января 24, 2012, 13:16
2. Метод Shortcut работает отлично, за исключением случая, когда на форме лежит две таблицы. В таком случае создается 2 єкземпляра Shortcut и при нажатии на CTRL+C не срабатывает ни один.
не вызывается, потому что они без фокуса.


Название: [РЕШЕНО] Re: Срабатывание комбинации CTRL+C
Отправлено: Andrew12 от Января 24, 2012, 14:34
С EventFilter действительно не досмотрел. Для того, чтоб стандартный Copy от Microsoft Windows не срабатывал необходимо в EventFilter возвращать true.