crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Определение источника сигнала
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
borune Дата 7.1.2011, 0:16
  Ага. Спасибо! Попробую)
Litkevich Yuriy Дата 7.1.2011, 0:12
  borune, смотри вариант Kagami, лучше наверное не придумаешь.
borune Дата 6.1.2011, 21:42
 
Цитата(Litkevich Yuriy @ 6.1.2011, 19:48) *
Цитата(borune @ 5.1.2011, 23:56) *
то метод sender() возвращает адрес QAction, а не объекта.
под объектом понимается виджет? (QAction - объект)



да, да, конечно, я неправильно выразился.
Litkevich Yuriy Дата 6.1.2011, 19:48
 
Цитата(borune @ 5.1.2011, 23:56) *
то метод sender() возвращает адрес QAction, а не объекта.
под объектом понимается виджет? (QAction - объект)
Kagami Дата 5.1.2011, 22:11
  QSignalMapper?
borune Дата 5.1.2011, 21:56
  воспользовался твоим советом. Возник новый вопрос.

Если я соединяю сигнал, эмитируемый при клике на объект, со слотом-обработчиком, то метод sender() возвращает верное значение указателя на объект. А если я создаю контекстное меню (создаю QAction'ы, соединяю их с соответствующими слотами и добавляю к своим объектам), то метод sender() возвращает адрес QAction, а не объекта. Как же быть с контекстным меню?
borune Дата 5.1.2011, 21:13
  дада. я сам тока что нашел этот метод)) спасибо!
DEADHUNT Дата 5.1.2011, 20:36
 
QObject *sender();
borune Дата 5.1.2011, 20:28
  Друзья, я еще не очень освоил кутэ, поэтому вынужден все время обращаться к вам. Вот и сейчас обращаюсь снова.

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

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

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

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

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 0:34