crossplatform.ru

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

5 страниц V  < 1 2 3 4 > »   
Ответить в данную темуНачать новую тему
> Связка слота и сигнала разных объектов
AD
  опции профиля:
сообщение 15.1.2009, 15:30
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 15.1.2009, 15:11) *
кто такой measureAction в этом примере?

Опция (QAction), которая включает нужный мне флажок.
Цитата
а нельзя ли сделать вот так?
void TLV::measureDistance(bool is_measure){


    if(!is_measure) return;
  measureDistance(bool);  
    editCoords -> setText("Distance measurement");
}

А где ее вызывать?
Еще раз: я тот слот вызываю всегда, когда у меня идет переключение опции. Мне бы хотелось, чтобы при этом же переключении вызывалась функция из другого класса. Как это можно реализовать? :) Заранее благодарен за помощь....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
spirit
  опции профиля:
сообщение 15.1.2009, 15:35
Сообщение #12


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 13.1.2009
Из: Ukraine, Krivoy Rog
Пользователь №: 486

Спасибо сказали: 1 раз(а)




Репутация:   1  


тогда этот сигнал надо перенести в TLV и тогда сделать так

void TLV::measureDistance(bool is_measure){
    if(!is_measure) return;
    emit checked_dist_measure(is_measure);
    editCoords -> setText("Distance measurement");
}
....


connect(m_tvlWidget, SIGNAL(checked_dist_measure(bool)), this, SLOT(measureDistance(bool)));

....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 15.1.2009, 16:05
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


м... а потом сделать указатель на главное окно программы в том виджете и вызвать указанный слот? Или я опять что-то путаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 15.1.2009, 16:09
Сообщение #14


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 15.1.2009, 16:05) *
м... а потом сделать указатель на главное окно программы в том виджете и вызвать указанный слот? Или я опять что-то путаю?

вот видишь ты путаешь а я вообще не пойму.... напиши поподробнее что хочешь сделать. помогу чем могу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 15.1.2009, 16:31
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Есть галочка, которую я переключаю в контекстном меню в виджете карты. Необходимо, чтобы при переключении этой галочки, срабатывал слот в другом классе, классе главного окна, в котором содержится данный виджет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
spirit
  опции профиля:
сообщение 15.1.2009, 16:34
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 13.1.2009
Из: Ukraine, Krivoy Rog
Пользователь №: 486

Спасибо сказали: 1 раз(а)




Репутация:   1  


т.е. иерархия классов такая: главный виджет -> карта ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 15.1.2009, 16:35
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(spirit @ 15.1.2009, 16:34) *
т.е. иерархия классов такая: главный виджет -> карта ?

угу. Только они не связаны наследованием. А скорее это композиция.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
spirit
  опции профиля:
сообщение 15.1.2009, 16:40
Сообщение #18


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 13.1.2009
Из: Ukraine, Krivoy Rog
Пользователь №: 486

Спасибо сказали: 1 раз(а)




Репутация:   1  


я понял. "карта" обрабатывает клик в контекстном меню или "главное окно"?

если "карта", то создать сигнал в "карте" и связать его с "главным окном", а уже в "главном окне" создать слот


который будет дергать нужный слот "другого" класса.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 15.1.2009, 16:41
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вот скрин:
[attachment=379:dist_galk.JPG]
Задача у меня следующая. При нажатии на "Distance measurement", в поле где отображаются координаты появлялась следующая фраза "Distance measurement". Когда галку убираем, снова были видны координаты. Вот, чего хочу достигнуть!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.1.2009, 16:44
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 15.1.2009, 17:18) *
Такая ситуация. Есть виджет отрисовки карты, который я переопределил (сделал наследника от QWidget).
Этот виджет называется QTrackWidget? Если да, то идем дальше:

Цитата(AD @ 15.1.2009, 17:18) *
В нем есть слот, который определяется, когда я в контекстном меню нажимаю определенную галочку.
галочка, видимо, посылает сигнал. Который соединен в классе QTrackWidget с его же слотом? Если да, то идем дальше:

Цитата(AD @ 15.1.2009, 17:18) *
Каким образом мне определить слот в главном окне так, чтобы он реагировал на то же самое действие?
слот определяется как обычно.

Ключевой момент здесь это сигнал от галочки, нужно его сделать доступным из главного окна. Если галочка принадлежит виджету QTrackWidget, то делать галочку видимой для других классов плохой вариант. Я бы сделал так:

В классе QTrackWidget определил бы сигнал "щелкнули галочку", а в конструкторе QTrackWidget, где видимо создается галочка и соеденяется со слотом QTrackWidget'а, соеденил сигнал галочки с сигналом QTrackWidget::"щелкнули галочку". Тогда сигнал будет еще и ретранслироватся (предаваться дальше).
Затем в главном окне после создания экземпляра QTrackWidget, соеденил бы сигнал QTrackWidget::"щелкнули галочку" с подходящим слотом главного окна.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V  < 1 2 3 4 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.3.2024, 5:09