Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 17:03   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Восклицание Проблема с QAction

Всем привет!

Есть иконка в трее
У неё есть меню
Код:
    m_ptrayIconMenu = new QMenu(this);
Динамически создаём 2 итема
Код:
    QAction* act1 = new QAction("Analyze 1 page", this);
    connect(act1, SIGNAL(triggered()),
            this, SLOT(analyze())
            );

    QAction* act2 = new QAction("Analyze 2 page", this);
    connect(act2, SIGNAL(triggered()),
            this, SLOT(analyze())
            );
Такая задача
По нажатию на act1 вызывать одно действие, а по act2 - другое

Конечно, так сделать не выйдет
Тогда нужно вызывать одно и то же действие, но С ПАРАМЕТРОМ:
Код:
    QAction* act1 = new QAction("Analyze 1 page", this);
    connect(act1, SIGNAL(triggered()),
            this, SLOT(analyze("page1"))
            );

    QAction* act2 = new QAction("Analyze 2 page", this);
    connect(act2, SIGNAL(triggered()),
            this, SLOT(analyze("page2"))
            );
Но увы, так тоже нельзя!

Так как же быть?
Ещё раз обращу внимание, что меню должно вызываться динамически, => количество и сами элементы ЗАРАНЕЕ неизвестны
Lindemann66 вне форума Ответить с цитированием
Старый 15.08.2011, 21:53   #2
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Может это поможет:
Цитата:
QObject * QObject::sender () const [protected]
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. The pointer is valid only during the execution of the slot that calls this function from this object's thread context.

The pointer returned by this function becomes invalid if the sender is destroyed, or if the slot is disconnected from the sender's signal.

Warning: This function violates the object-oriented principle of modularity. However, getting access to the sender might be useful when many signals are connected to a single slot.

Warning: As mentioned above, the return value of this function is not valid when the slot is called via a Qt::DirectConnection from a thread different from this object's thread. Do not use this function in this type of scenario.
В первом случае с analyze() без параметров, проверять кто отправил сигнал. Думаю должно получиться, возможно есть ещё варианты.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 16.08.2011, 16:15   #3
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

спасибо
Lindemann66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37