Название: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 18, 2013, 02:45 Код: QAbstractItemView::clicked(const QModelIndex & index) Заранее спасибо. Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: carrygun от Январь 18, 2013, 05:09 Переопределить mousePressEvent(), смотреть кнопки эвента и на метод itemAt().
Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 19, 2013, 08:59 А область айтема для курсора придется задавать?
Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 19, 2013, 18:06 Из различных источников почерпнул, что нужно определять область при пересечении границ которой можно высылать сигнал (с этим более-менее понятно), но вот как определять саму область (ну, чтобы она была привязана к конкретному объекту (координаты объекта могут меняться (ну, мне так думается))) не совсем ясно. Или я все не правильно мыслю? А может есть более очевидный способ выслать обсуждаемый сигнал для правой кнопки мыши (ну, как для левой кнопки)?
Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Bepec от Январь 19, 2013, 18:53 Qt сам определяет где и кто и чем кликнул.
Данный слот относится к виджету. У виджета есть параметры как положение, высота ширина. Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 20, 2013, 10:39 Блин... а чтобы itemAt() вызвать нужно наследоваться от QGraphicsView?
Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Old от Январь 20, 2013, 10:42 Блин... а чтобы itemAt() вызвать нужно наследоваться от QGraphicsView? Почему? Он в публичных методах.Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 20, 2013, 10:58 Почему? Он в публичных методах. В публичных методах где?Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Bepec от Январь 20, 2013, 11:03 Надо вам почитать книгу C++ за 21 день. Через полгодика поймёте суть.
Публичные методы можно вызывать, имея указатель на класс. Приватные - только если ваш класс является наследником. Ещё проще: Код: ui.graphicsView->itemAt(); // можно. Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 20, 2013, 11:22 Надо вам почитать книгу C++ за 21 день. Через полгодика поймёте суть. Может тогда книгу С++ за пол годика? ;DПубличные методы можно вызывать, имея указатель на класс. Приватные - только если ваш класс является наследником. Ещё проще: Код: ui.graphicsView->itemAt(); // можно. Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: carrygun от Январь 21, 2013, 05:53 При чем тут QGraphicsView?
Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Bepec от Январь 21, 2013, 05:58 Ахз. Меня заразил хозяин темы, я начал фигню нести :D
PS а ТС-су почитать про С++ надо всё же . Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 21, 2013, 10:17 При чем тут QGraphicsView? Потому что itemAt() там нашел.Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Senia_Bezrubashkin от Январь 21, 2013, 10:24 Ахз. Меня заразил хозяин темы, я начал фигню нести :D Нужно брать ответственность за свои поступки... вообще нормальный принцип.PS а ТС-су почитать про С++ надо всё же . А я, по твоему, что делаю? Или только в последовательном режиме голова работает? Параллельно не... никак? 8)Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: carrygun от Январь 21, 2013, 11:28 Потому что itemAt() там нашел. Я немного перепутал метод, тебе нужен indexAt(), тот что у QAbstractItemView. Наследуешься от нужного класса (например QTreeView), переопределяешь двойной щелчек мышью, смотришь на кнопки мыши и координаты эвента и, если надо, испускаешь сигнал с нужным индексом (или что тебе удобнее). Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Bepec от Январь 21, 2013, 11:33 А ещё можно поставить простой eventFilter на виджет и с успехом его обрабатывать.
PS а я отвечаю за свои поступки :) Сказал - фигню нести начал и действительно - фигню нёс:D Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: carrygun от Январь 21, 2013, 12:05 Вот кстати такой момент. Люди рубящие, объясните что и когда лучше в плане переопределения метода или фильтра эвентов.
В каких случаях какие решения выгоднее/правильнее и почему? Название: Re: Как вызвать сигнал clicked() правой кнопкой мыши? Отправлено: Bepec от Январь 21, 2013, 12:20 У каждого своё мнение.
Если нужно переопределить одну функцию в классе (например в TableView), то имеет смысл поставить фильтр и вместо одного класса (практически не использующегося) у вас будет одна функция. А вот если парочку + свой функционал - проще наследоваться :) |