Hi,
I have some kind of loop using signals & slots. My application crashed when program do 3580 iterations on Qt4.8. I can't understand why crash. Please kindly help.
//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
{
...
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
{
...
signals:
void back();
public slots:
void go();
};
//second.cpp
void Second::go()
{
emit back();
}
//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();
}
To copy to clipboard, switch view to plain text mode
test2.zip
Thanks;
Bookmarks