crossplatform.ru

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

> Обмен сигнал-слотами крашится
cupersuper
  опции профиля:
сообщение 10.11.2015, 20:11
Сообщение #1


Студент
*

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

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




Репутация:   0  


Объект 1 класса отсылает сигнал объекту 2 класса, тот при получении сигнала, отвечает. Получается некий цикл. Программа завершается с ошибкой через 3580 таких итераций на Qt4.8, через 3683 на Qt4.7.
Не пойму почему крашится.

//main.cpp
int main(int argc, char *argv[])
{
...
    MainWindow w;
    Second s;
    QObject::connect( &w,SIGNAL(go()),   &s,SLOT(go()) );
    QObject::connect( &s,SIGNAL(back()), &w,SLOT(back()) );
...
}


//mainwindow.h
class MainWindow : public QMainWindow
{
...
  private:
    int VALUE;
    int MAX_VALUE;

  private slots:
    void on_pushButton_clicked();

  public slots:
    void back();

  signals:
    void go();
};


//mainwindow.cpp
void MainWindow::on_pushButton_clicked()
{
    VALUE = 0;
    MAX_VALUE = 10000;

    emit go();
}


void MainWindow::back()
{
    qDebug() << VALUE;

    if(VALUE<MAX_VALUE)
    {
        VALUE++;
        emit go();
    }
}


//second.h
class Second : public QObject
{
...
signals:
    void back();

public slots:
    void go();
};


//second.cpp
void Second::go()
{
    emit back();
}

Прикрепленный файл  test2.zip ( 2.49 килобайт ) Кол-во скачиваний: 140
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 29.3.2024, 4:28