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
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.