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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как вызвать сигнал clicked() правой кнопкой мыши?  (Прочитано 6997 раз)
Senia_Bezrubashkin
Гость
« : Январь 18, 2013, 02:45 »

Код:
QAbstractItemView::clicked(const QModelIndex & index)
Как вызвать этот сигнал правой кнопкой мыши?
Заранее спасибо.
Записан
carrygun
Гость
« Ответ #1 : Январь 18, 2013, 05:09 »

Переопределить mousePressEvent(), смотреть кнопки эвента и на метод itemAt().
Записан
Senia_Bezrubashkin
Гость
« Ответ #2 : Январь 19, 2013, 08:59 »

А область айтема для курсора придется задавать?
Записан
Senia_Bezrubashkin
Гость
« Ответ #3 : Январь 19, 2013, 18:06 »

Из различных источников почерпнул, что нужно определять область при пересечении границ которой можно высылать сигнал (с этим более-менее понятно), но вот как определять саму область (ну, чтобы она была привязана к конкретному объекту (координаты объекта могут меняться (ну, мне так думается))) не совсем ясно. Или я все не правильно мыслю? А может есть более очевидный способ выслать обсуждаемый сигнал для правой кнопки мыши (ну, как для левой кнопки)?
« Последнее редактирование: Январь 19, 2013, 18:07 от Senia_Bezrubashkin » Записан
Bepec
Гость
« Ответ #4 : Январь 19, 2013, 18:53 »

Qt сам определяет где и кто и чем кликнул.

Данный слот относится к виджету. У виджета есть параметры как положение, высота ширина.
Записан
Senia_Bezrubashkin
Гость
« Ответ #5 : Январь 20, 2013, 10:39 »

Блин... а чтобы itemAt() вызвать нужно наследоваться от QGraphicsView?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Январь 20, 2013, 10:42 »

Блин... а чтобы itemAt() вызвать нужно наследоваться от QGraphicsView?
Почему? Он в публичных методах.
Записан
Senia_Bezrubashkin
Гость
« Ответ #7 : Январь 20, 2013, 10:58 »

Почему? Он в публичных методах.
В публичных методах где?
Записан
Bepec
Гость
« Ответ #8 : Январь 20, 2013, 11:03 »

Надо вам почитать книгу C++ за 21 день. Через полгодика поймёте суть.

Публичные методы можно вызывать, имея указатель на класс. Приватные - только если ваш класс является наследником.

Ещё проще:
Код:
ui.graphicsView->itemAt(); // можно.
Записан
Senia_Bezrubashkin
Гость
« Ответ #9 : Январь 20, 2013, 11:22 »

Надо вам почитать книгу C++ за 21 день. Через полгодика поймёте суть.

Публичные методы можно вызывать, имея указатель на класс. Приватные - только если ваш класс является наследником.

Ещё проще:
Код:
ui.graphicsView->itemAt(); // можно.
Может тогда книгу С++ за пол годика?  Смеющийся
Записан
carrygun
Гость
« Ответ #10 : Январь 21, 2013, 05:53 »

При чем тут QGraphicsView?
Записан
Bepec
Гость
« Ответ #11 : Январь 21, 2013, 05:58 »

Ахз. Меня заразил хозяин темы, я начал фигню нести Веселый

PS а ТС-су почитать про С++ надо всё же .
Записан
Senia_Bezrubashkin
Гость
« Ответ #12 : Январь 21, 2013, 10:17 »

При чем тут QGraphicsView?
Потому что itemAt() там нашел.
Записан
Senia_Bezrubashkin
Гость
« Ответ #13 : Январь 21, 2013, 10:24 »

Ахз. Меня заразил хозяин темы, я начал фигню нести Веселый
Нужно брать ответственность за свои поступки... вообще нормальный принцип.
PS а ТС-су почитать про С++ надо всё же .
А я, по твоему, что делаю? Или только в последовательном режиме голова работает? Параллельно не... никак?  Крутой
Записан
carrygun
Гость
« Ответ #14 : Январь 21, 2013, 11:28 »

Потому что itemAt() там нашел.

Я немного перепутал метод, тебе нужен indexAt(), тот что у QAbstractItemView. Наследуешься от нужного класса (например QTreeView), переопределяешь двойной щелчек мышью, смотришь на кнопки мыши и координаты эвента и, если надо, испускаешь сигнал с нужным индексом (или что тебе удобнее).
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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