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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как определить правый клик по кнопке?  (Прочитано 4680 раз)
neosapient
Гость
« : Май 15, 2009, 11:38 »

Здравствуйте.

Появилась задача копировать кусок надписи кнопки в буфер обмена, когда кнопке отсылается right click.
Как можно поймать/отследить этот правый клик.
Записан
spirit
Гость
« Ответ #1 : Май 15, 2009, 11:42 »

это нужно , что бы отобразить контектсное меню?
Записан
neosapient
Гость
« Ответ #2 : Май 15, 2009, 12:20 »

Нет
надо просто копировать текст при правом клике.
« Последнее редактирование: Май 15, 2009, 12:26 от neosapient » Записан
spirit
Гость
« Ответ #3 : Май 15, 2009, 12:25 »

ну один из вариантов -- это установить ивент фильтр на виджет,
из которого что-то будет копироваться, и отлавливать правый клик.
Записан
Rcus
Гость
« Ответ #4 : Май 15, 2009, 12:26 »

Цитировать
contextMenuPolicy : Qt::ContextMenuPolicy

This property holds how the widget shows a context menu.

The default value of this property is Qt::DefaultContextMenu, which means the contextMenuEvent() handler is called. Other values are Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu, and Qt::CustomContextMenu. With Qt::CustomContextMenu, the signal customContextMenuRequested() is emitted.

Не то?
Записан
neosapient
Гость
« Ответ #5 : Май 15, 2009, 13:36 »

В общем сделал наследника от QPushButton и стал обрабатывать mousePressEvent

Код:
void QxPushButton::mousePressEvent(QMouseEvent * e){
if (e->buttons() & Qt::RightButton) {
QString t = text();

QApplication::clipboard()->setText(t);
}
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Май 15, 2009, 16:51 »

Можно и без наследника, через installEventFilter.
Записан

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

По-моему самое разумное решение в данной ситуации будет либо ловить стгнал customContextMenuRequested ( const QPoint & pos ), либо установить фильтр installEventFilter ( QObject * filterObj )
Наследование здесь самый длинный путь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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