Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение источника сигнала
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
borune
Друзья, я еще не очень освоил кутэ, поэтому вынужден все время обращаться к вам. Вот и сейчас обращаюсь снова.

Мне надо реализовать следующее. Есть созданное мной окно QDialog'а. При работе у пользователя есть возможность добавлять элементы в это окно нажатием кнопок (конкретно добавляемыми элементами являются наследники класса QLabel, ну вообщем будем считать, что объекты QLabel).

Для работы с созданными объектами у меня есть список указателей на них.

Что требуется сделать. Требуется добавить к каждому такому элементу контекстное меню по правому клику мышью. А в этом меню надо реализовать некоторые стандартные действия (редактировать, удалить и т.д.). Меню добавить несложно, но вопрос у меня вот в чем. Насколько я понимаю, схема работы меню такова: выбор пункта (который задается объектом класса QAction) в контекстном меню эмитирует какой-то сигнал, объявленный в классе QAction и его родителях. Для перехвата этого сигнала требуется подключить требуемый сигнал соответствующего объекта к слоту-обработчику. Но, опять же, насколько я понимаю, механизм сигналов не позволяет определить источник сигнала. А мне нужно знать, на какой именно из объектов нажал пользователь, потому что работа (редактирование, удаление и т.д.) должна происходить только с тем объектом, на который нажал пользователь.

В идеале я бы хотел как-нибудь сделать так, чтобы при выборе пункта меню в слот приходил указатель на объект, по которому кликнул пользователь. Но как это сделать я никак не додумаюсь. Неужели иного способа, кроме как ловить координаты мыши в момент клика, и потом находить объект, который располагается по этим координатам, нельзя придумать?

DEADHUNT
QObject *sender();
borune
дада. я сам тока что нашел этот метод)) спасибо!
borune
воспользовался твоим советом. Возник новый вопрос.

Если я соединяю сигнал, эмитируемый при клике на объект, со слотом-обработчиком, то метод sender() возвращает верное значение указателя на объект. А если я создаю контекстное меню (создаю QAction'ы, соединяю их с соответствующими слотами и добавляю к своим объектам), то метод sender() возвращает адрес QAction, а не объекта. Как же быть с контекстным меню?
Kagami
QSignalMapper?
Litkevich Yuriy
Цитата(borune @ 5.1.2011, 23:56) *
то метод sender() возвращает адрес QAction, а не объекта.
под объектом понимается виджет? (QAction - объект)
borune
Цитата(Litkevich Yuriy @ 6.1.2011, 19:48) *
Цитата(borune @ 5.1.2011, 23:56) *
то метод sender() возвращает адрес QAction, а не объекта.
под объектом понимается виджет? (QAction - объект)



да, да, конечно, я неправильно выразился.
Litkevich Yuriy
borune, смотри вариант Kagami, лучше наверное не придумаешь.
borune
Ага. Спасибо! Попробую)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.