Есть такой код:
class Indicator : public QObject
{
Q_OBJECT
public:
Indicator();
void start();
void init();
private:
QTimer dataTimer;
private slots:
void onDraw();
};
Indicator::Indicator()
{
}
void Indicator::onDraw()
{
std::cout << "input to onDraw" << std::flush;
doSomething();
std::cout << "out from onDraw" << std::flush;
}
void Indicator::start()
{
std::cout << "input to setValue" << std::flush;
dataTimer.start(100);
std::cout << "out from setValue" << std::flush;
}
void Indicator::init(QCustomPlot *customPlot)
{
connect(&dataTimer, SIGNAL(timeout()), this, SLOT(onDraw()));
}
В главном окне приложения есть такое:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
indicator.init();
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onStart()));
}
void MainWindow::onStart()
{
indicator.start();
}
Если во время работы Indicator::onDraw() (где-то внутри doSomething()) нажать кнопку pushButton, то у нас вызовется слот onStart()? И если да, то таймер перезапустится?
И если эти предположения верны, то как избежать этого?