crossplatform.ru

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

> Связка слота и сигнала разных объектов
AD
  опции профиля:
сообщение 15.1.2009, 14:18
Сообщение #1


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

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

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




Репутация:   17  


Такая ситуация. Есть виджет отрисовки карты, который я переопределил (сделал наследника от QWidget). В нем есть слот, который определяется, когда я в контекстном меню нажимаю определенную галочку.
Каким образом мне определить слот в главном окне так, чтобы он реагировал на то же самое действие?


Чтобы не быть голословным, вот небольшой примерчик кода:
/// Класс виджета карты с траектории
class QTrackWidget: public QWidget
{
    Q_OBJECT

private:
    bool measure_flag;                ///< флаг, сигнализирующий о моменте измерения

private:
       void initActionMeasurement();

private slots:
    void check(bool f);

// anything
};

/// Слот нажатия на опцию измерения расстояния
void QTrackWidget::check(bool f)
{
    if(f) setCursor(Qt::CrossCursor);
    else
    {
        measure_flag = false;
        calc_distance -> clear();
    }
}

/// Инициализация опции для измерения расстояний
void QTrackWidget::initActionMeasurement()
{
    // anything
    connect(measureAction, SIGNAL(toggled(bool)), this, SLOT(check(bool)));
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 15.1.2009, 17:56
Сообщение #2


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

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

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




Репутация:   94  


AD, ты всех запутал своими примерами. Если у тебя есть какие-то отношения, в данном случае сигнально-слотовые.
то ты должен выкидывать из кода, для примеров, только нисущественные моменты, а все существенные оставить. Т.е. участников отношений.
/// Класс виджета карты с траектории
class QTrackWidget: public QWidget
{
    Q_OBJECT

private:
    bool measure_flag;                ///< флаг, сигнализирующий о моменте измерения

private:
       void initActionMeasurement();

private slots:
    void check(bool f);

// anything
};

/// Слот нажатия на опцию измерения расстояния
void QTrackWidget::check(bool f)
{
    if(f) setCursor(Qt::CrossCursor);
    else
    {
        measure_flag = false;
        calc_distance -> clear();
    }
}

/// Инициализация опции для измерения расстояний
void QTrackWidget::initActionMeasurement()
{
    // anything
    connect(measureAction, SIGNAL(toggled(bool)), this, SLOT(check(bool)));
}

здесь есть слот QTrackWidget::check(bool f); Есть соединение с этим слотом connect(measureAction, SIGNAL(toggled(bool)), this, SLOT(check(bool)));
некого нечто measureAction, кто такой откуда? (где объявлен, где создан экзепляр, приведи код)
Зато есть мусор:
    if(f) setCursor(Qt::CrossCursor);
    else
    {
        measure_flag = false;
        calc_distance -> clear();
    }
который неважен.

Непонятно как используется класс QTrackWidget, где создается его экземпляр.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Связка слота и сигнала разных объектов   15.1.2009, 14:18
- - spirit   можно создать сигнал в наследуемом виджете , а пот...   15.1.2009, 14:21
- - Litkevich Yuriy   Цитата(spirit @ 15.1.2009, 17:21) можно с...   15.1.2009, 14:29
|- - AD   Сделал вот так вот: class QTrackWidget: public...   15.1.2009, 14:52
|- - spirit   а Q_OBJECT где?   15.1.2009, 14:55
|- - AD   Цитата(spirit @ 15.1.2009, 14:55) а Q_OBJ...   15.1.2009, 14:58
|- - spirit   void TLV::measureDistance(bool is_meas...   15.1.2009, 15:02
|- - AD   Цитата(spirit @ 15.1.2009, 15:02) void TL...   15.1.2009, 15:04
|- - spirit   вот еть код void TLV::measureDistance...   15.1.2009, 15:09
- - Litkevich Yuriy   AD, сигнал должен посылать тот класс в котором это...   15.1.2009, 15:11
|- - AD   Цитата(Litkevich Yuriy @ 15.1.2009, 15:11...   15.1.2009, 15:30
|- - spirit   тогда этот сигнал надо перенести в TLV и тогда сде...   15.1.2009, 15:35
|- - AD   м... а потом сделать указатель на главное окно про...   15.1.2009, 16:05
|- - kwisp   Цитата(AD @ 15.1.2009, 16:05) м... а пото...   15.1.2009, 16:09
|- - AD   Есть галочка, которую я переключаю в контекстном м...   15.1.2009, 16:31
|- - spirit   т.е. иерархия классов такая: главный виджет -> ...   15.1.2009, 16:34
|- - AD   Цитата(spirit @ 15.1.2009, 16:34) т.е. ие...   15.1.2009, 16:35
|- - spirit   я понял. "карта" обрабатывает клик в кон...   15.1.2009, 16:40
||- - AD   Цитата(spirit @ 15.1.2009, 16:40) я понял...   15.1.2009, 16:44
||- - spirit   вы меня не поняли. ЦитатаКлик обратывается в конт...   15.1.2009, 16:52
|- - AD   Вот скрин: Задача у меня следующая. При нажатии н...   15.1.2009, 16:41
- - Litkevich Yuriy   Цитата(AD @ 15.1.2009, 17:18) Такая ситуа...   15.1.2009, 16:44
|- - kwisp   Цитата(Litkevich Yuriy @ 15.1.2009, 16:44...   15.1.2009, 16:54
|- - AD   Блин, ну не попадает он в этот слот. Как поправить...   15.1.2009, 17:21
- - SABROG   Цитата(AD @ 15.1.2009, 16:44) сигнал...со...   15.1.2009, 16:53
- - Litkevich Yuriy   Цитата(AD @ 15.1.2009, 20:21) в этот слот...   15.1.2009, 17:37
|- - AD   Цитата(Litkevich Yuriy @ 15.1.2009, 17:37...   15.1.2009, 17:42
- - Litkevich Yuriy   Цитата(AD @ 15.1.2009, 20:42) но что надо...   15.1.2009, 17:45
|- - kwisp   Цитата(Litkevich Yuriy @ 15.1.2009, 17:45...   15.1.2009, 17:53
- - Litkevich Yuriy   AD, ты всех запутал своими примерами. Если у тебя ...   15.1.2009, 17:56
|- - AD   Цитата(Litkevich Yuriy @ 15.1.2009, 17:56...   15.1.2009, 18:03
|- - kwisp   что в студии компилятор не запускается уже из кома...   15.1.2009, 18:08
- - Litkevich Yuriy   Цитата(AD @ 15.1.2009, 21:03) Этот класс ...   15.1.2009, 18:13
|- - AD   /// Класс виджета карты с траектории class QTrackW...   15.1.2009, 18:18
|- - spirit   судя по коду этого сигнала checked_dist_measure не...   15.1.2009, 18:28
||- - AD   Цитата(spirit @ 15.1.2009, 18:28) судя по...   15.1.2009, 18:29
||- - spirit   Цитата(AD @ 15.1.2009, 17:29) Цитата(spir...   15.1.2009, 18:38
|- - kwisp   TLV::TLV { connect(trackView, SIGNAL...   15.1.2009, 18:28
- - spirit   или компилябельный пример прикрепи ЗЫ. в студии ...   15.1.2009, 18:18
- - Litkevich Yuriy   AD, отредактируй свой пост, чтобы показать в класс...   15.1.2009, 18:30
- - Litkevich Yuriy   Цитата(kwisp @ 15.1.2009, 21:28) почему т...   15.1.2009, 18:42
- - AD   Эврика, заработало! Litkevich Yuriy, kwisp, ...   15.1.2009, 18:51


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 30.12.2024, 20:45