crossplatform.ru

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

> [РЕШЕНО] Как передать слоту параметр по ссылке ?
Diem
  опции профиля:
сообщение 10.3.2009, 15:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.3.2009
Пользователь №: 603

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




Репутация:   0  


Есть класс X для примера:
////////////////////// Файл x.h //////////////////////
#ifndef X_H
#define X_H
#include <QtDebug>
class X : public QObject
{
    Q_OBJECT
public:
    X(QObject *parent = 0);
public slots:
    void exampleSlot(QList<int> list);

signals:
    void exampleSignal(QList<int> list);
};
#endif // X_H

////////////////////// Файл x.cpp //////////////////////
#include"x.h"
X::X(QObject *parent)
    : QObject(parent)
{
    QList<int> list;
    list.append(1);
    qDebug() << "value before slot: " << list;
    connect(this, SIGNAL(exampleSignal(QList<int>)), this, SLOT(exampleSlot(QList<int>)));
    emit exampleSignal(list);
    qDebug() << "value after slot: " << list;
}
void X::exampleSlot(QList<int> list) {
    list.append(2);
    qDebug() << "value in slot: " << list;
}

////////////////////// Файл main.cpp //////////////////////
#include <QApplication>
#include "x.cpp"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    X x;
    return app.exec();
}

////////////////////// Вывод //////////////////////
Запуск...
value before slot: (1)
value in slot: (1, 2)
value after slot: (1)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Как сделать чтоб в выводе я получил "value after slot: (1, 2)" ?
Прикрепленные файлы
Прикрепленный файл  x.zip ( 811 байт ) Кол-во скачиваний: 128
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Diem
  опции профиля:
сообщение 10.3.2009, 16:42
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.3.2009
Пользователь №: 603

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




Репутация:   0  


Такой подход у меня вызван тем, что есть конкретная задача:
Имеется tcp сервер (QTcpServer)
В нем периодически создаются экзэмпляры класса (буду именновать Y)
на каждый сигнал readyRead() срабатывает слот, который обрабатывает http хидеры и в зависимости от них вызывает нужную функцию.
Одна из функций посылает сигнал c параметрами из http заголовка (params) + передаёт локальную переменную (list) по ссылке, на этот сигнал реагируют слоты всех эземпляров класса Y.
И в зависимости от params либо всё игнорируют либо добавляют в list нужные данные.
Потомlist переводится в json и идёт в ответ браузеру. const Type& var конечно в таком случае не прокатит.
Так же при создании каждого экземпляра класса Y запускается QTimer при timeot() которого этот экземпляр и удаляется из памяти.

Так вот у меня вопрос: возможно ли создать что-то типа QMap<int, *MyClass>
что бы опрашивать в цикле, не все, а только те экземпляры Y которые мне нужно ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Diem   [РЕШЕНО] Как передать слоту параметр по ссылке ?   10.3.2009, 15:32
- - kwisp   указатель либо ссылка   10.3.2009, 15:36
- - Diem   Ну как бы это очевидно. Но я с c++ дело ооочень да...   10.3.2009, 15:40
- - Litkevich Yuriy   так и пиши ссылку: void exampleSlot(QList<int...   10.3.2009, 15:42
- - LE0N   А почему не * ? На сколько я знаю, подход с & ...   10.3.2009, 15:46
- - Litkevich Yuriy   Цитата(LE0N @ 10.3.2009, 18:46) На скольк...   10.3.2009, 15:47
- - Diem   Блин совсем запарился. Всё верно, перепробывав все...   10.3.2009, 15:49
- - kwisp   Цитата(LE0N @ 10.3.2009, 15:46) А почему ...   10.3.2009, 15:51
- - LE0N   Да просто перехожу с СИ, на СИ++, читаю попутно Ст...   10.3.2009, 15:54
- - Litkevich Yuriy   LE0N, на самом деле замечание было верным, но без ...   10.3.2009, 16:17
- - kwisp   Цитата(Litkevich Yuriy @ 10.3.2009, 16:17...   10.3.2009, 16:19
- - Litkevich Yuriy   kwisp, нда... ты прав   10.3.2009, 16:38
- - Diem   Такой подход у меня вызван тем, что есть конкретна...   10.3.2009, 16:42
- - kwisp   Цитата(Diem @ 10.3.2009, 16:42) QMap<i...   10.3.2009, 16:46
- - Litkevich Yuriy   Цитата(Diem @ 10.3.2009, 19:42) возможно ...   10.3.2009, 16:47
- - Diem   QMap<int, *MyClass> - выдаёт ошибку Цитатаош...   10.3.2009, 16:54
- - Litkevich Yuriy   я думаю вопрос поставленный в заголовке темы раскр...   10.3.2009, 16:59
- - Diem   Да, конечно.   10.3.2009, 17:04


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


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




RSS Текстовая версия Сейчас: 2.12.2024, 10:29