Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
28 октября 2018 г. 12:43

Послать подряд один и тот же сигнал с разными параметрами

signal, Slot


Связь сигналов и слотов:

    connect(fuelPage,&FuelPage::sendInfo,this,&RecoveryWizard::slotGetPageData);
    connect(fuelPage,&FuelPage::signalSendCheckData,this,&RecoveryWizard::slotSetLostCheckData);

Пытаюсь послать дважды один и тот же сигнал с разными параметрами.

void FuelPage::sendDataTo()
{
    emit sendInfo(2,field("shiftID").toString());
    emit signalSendCheckData("SHIFT_ID", field("shiftID").toInt());

    emit sendInfo(3,field("posID").toString());
    emit signalSendCheckData("POS_ID",field("posID").toInt());
}

Получается, что обрабатывается только последний вызываемый сигнал.

Я что-то не так делаю, или не моя схема передачи данных между объектами не верна,


3

Да нет. Тут не в подключении дело, если действительно обрабатывается только последний вызов.

Вот пример.

#include "widget.h"
#include "ui_widget.h"

#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::onPushButtonClicked);
    connect(this, &Widget::signal_1, this, &Widget::on_signal_1);
    connect(this, &Widget::signal_2, this, &Widget::on_signal_2);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::onPushButtonClicked()
{
    emit signal_1(1);
    emit signal_2(2);

    emit signal_1(3);
    emit signal_2(4);
}

void Widget::on_signal_1(int arg1)
{
    qDebug() << "on_signal_1" << arg1;
}

void Widget::on_signal_2(int arg1)
{
    qDebug() << "on_signal_2" << arg1;
}

А вот вывод в консоль

on_signal_1 1
on_signal_2 2
on_signal_1 3
on_signal_2 4

Киньте в слоты вывод qDebug(), может вам показалось, что происходит только один вызов, а на самом деле так кажется из-за какой-то другой логики в программе, что там что-то неправильно перезаписывается, или за что там отвечают ваши сигналы и слоты.


Для Django рекомендую VDS-хостинг TIMEWEB

0

Если комментирую последние две строки. то данные по сигналу из первых двух передаются.

0

У вас там нет никакой асинхронной логики? Использование потоков например? Просто должно работать.

Во-первых объединить логику слотов в один слот, а вторых написать слот, который будет принимать вектор структур данных, со всеми вам необходимыми параметрами. А потом в цикле выполнять все необходимые действия. Если уж вы подряд вызываете данные сигналы.



Для Django рекомендую VDS-хостинг TIMEWEB

0

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
16 ноября 2018 г. 19:09
Илья Завьялов

Qt - Тест 001. Сигналы и слоты

  • Результат:31баллов,
  • Очки рейтинга-10
16 ноября 2018 г. 12:49
Ирина Минигузина

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
16 ноября 2018 г. 8:55
Vitaliy

Qt - Тест 001. Сигналы и слоты

  • Результат:52баллов,
  • Очки рейтинга-4
Последние комментарии
16 ноября 2018 г. 6:50
Евгений Легоцкой

Добрый день! шаблон не находит, или шаблон неправильно прописали, или тег шаблона неправильно написан, иных выводов сделать не могу, из того, что вы написали. трейсбек нужно смотреть. Со...
16 ноября 2018 г. 6:48
Евгений Легоцкой

пройтись циклом по всем виджетам в обратном порядке for (int i = ui->vertialLayout->count() - 1; i >= 0; --i){ QWidget* w = ui->verticalLyout->itemAt(i)->widget();...
15 ноября 2018 г. 21:35
chunk

Доброго времени суток Евгений. Не подскажете что я делаю не так? Получаю ошибку такого характера: Reverse for 'add_comment' with arguments '('',)' not found. 1 pattern(s) tried: ...
15 ноября 2018 г. 15:35
Михаиллл

Спасибо. Похоже где то описку сделал, поэтому не работало. Я добавил на verticalLayout много виджитов. А можно ли их как то быстро и просто удалить?
15 ноября 2018 г. 14:55
Евгений Легоцкой

verticalLayout - это, по-моему предположению, должен быть у вас объект класса QVBoxLayout, который наследован от QBoxLayout. Поэтому открываете документацию на QVBoxLayout ...
Сейчас обсуждают на форуме
17 ноября 2018 г. 23:20
Евгений Легоцкой

Три года назад я подключал ffmpeg в проект на Qt/С++ на первой работе. И кодирование декодирование удалось запустить. Подключал как библиотеку. Думаю, что в зависимости от проекта мо...
17 ноября 2018 г. 14:13
Чарльз Грин

Я сейчас занимаюсь мультимедией, это аудио и видео, программы для концертов и т. д. Бибилиотека Qt очень помогает, она надежная, а надежность в моих приложениях очень важный фактор чтоб не пол...
16 ноября 2018 г. 16:28
Евгений Легоцкой

Добрый день! Спасибо, что воспользовались именно форумом. Заниматься курсовыми работами чьими-то ни было у меня времени нет, у самого полторы работы. Но что-то подсказать на фо...
16 ноября 2018 г. 9:52
Евгений Легоцкой

Отладчик!!!! Версия комплекта MSVC 2015 + компилятор 14.0!!!!
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы