Problem z Qtimer



  • Witam!
    mam problem z timerem, potrzebuję żeby funkcja Petla() wykonywała się co sekundę starałem się zrobić to w ten sposób:

    @MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    QTimer *timer = new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(Petla(QString,QString)));
    timer->start(1000);
    ui->setupUi(this);
    }@

    w funkcji SendMessage znajduje się funkcja Petla() która powinna się wykonywać co sekunde

    @void MainWindow::SendMessage(QString to, QString text)
    {
    Petla(ui->uriEdit->text(), ui->textEdit->toPlainText());
    }@

    Gdzie tkwi błąd? Czy w funkcji petla oprócz ciała funkcji powinny tkwić jakieś dodatkowe parametry dotyczące timera?


  • Moderators

    Błędów w tym kodzie kilka, ale głównie to nie potrzebujesz przecież żadnych argumentów w SendMessage. Wykasuj "QString to, QString text" z definicji i deklaracji tej funkcji, a także z połączenia sygnału i slotu.



  • dzięki, już sobie z tym poradziłem. Mam jeszcze pytanie, w jaki sposób zatrzymać timer? np żeby zatrzymał się po pewnej ilości wykonanych pętli


  • Moderators

    Użyj "QTimer::Stop()":http://qt-project.org/doc/qt-5/qtimer.html#stop. Ilość powtórzeń pętli musisz zliczyć sam, QTimer nie ma daje takich możliwości.


Log in to reply