Russian Qt Forum
Май 15, 2024, 22:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос про событие  (Прочитано 2894 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Август 24, 2014, 17:53 »

Здравствуйте. Вопрос следующий.
Мне нужно допустим чтобы моя запущенная программа каждые 10 сек выводила сообщение (одно и тоже)
собственно код простой использовать Qtime и QMessageBox.
Но вот где этот код нужно писать.
Поясню допустим вы запустили программу что в ней делаете кликаете и тд и тп, но независимо от ваших действий каждые 10 секунд работы программы появляется сообщение
Те мне нужно понять где как бы писать сам код... или какой метод переопределять....
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Август 24, 2014, 17:56 »

В MainWindow.
И вы наверное имели виду Timer.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Август 24, 2014, 18:40 »

да qtimer

 просто допустим вот вы запустили прогу и даже ничего не нажимая(вообщем вне зависимости от ваших действий ) каждые 10 сек появляется сообщение
но ведь вы говорите писать в mainwinodow.cpp в конструкторе(при запуске программы) там код этот не выполнится
Записан
Bepec
Гость
« Ответ #3 : Август 24, 2014, 18:44 »

Писать в конструкторе. Инициализируя таймер и привязывая его к слоту. И таймер каждые N будет вызывать слот.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #4 : Август 24, 2014, 19:02 »

Спасибо разобрался так вроде работает
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timer=new QTimer(this);

    timer->start();
    timer->setInterval(10000);
    connect(timer,SIGNAL(timeout()),this,SLOT(soobch()));


}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::soobch()
{
    QMessageBox msg;
    msg.setText(QString::fromLocal8Bit("ПРИВЕТ"));
    msg.exec();
}

Записан
8Observer8
Гость
« Ответ #5 : Август 26, 2014, 13:37 »

Ещё можете в Help'e забить: startTimer

Там такой пример есть:
Код
C++ (Qt)
class MyObject : public QObject
{
   Q_OBJECT
 
public:
   MyObject(QObject *parent = 0);
 
protected:
   void timerEvent(QTimerEvent *event);
};
 
MyObject::MyObject(QObject *parent)
   : QObject(parent)
{
   startTimer(50);     // 50-millisecond timer
   startTimer(1000);   // 1-second timer
   startTimer(60000);  // 1-minute timer
}
 
void MyObject::timerEvent(QTimerEvent *event)
{
   qDebug() << "Timer ID:" << event->timerId();
}
Записан
8Observer8
Гость
« Ответ #6 : Август 26, 2014, 13:41 »

А если по вашему примеру, то так:

MainWindow.h
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QTime>
 
namespace Ui {
   class MainWindow;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
 
public:
   explicit MainWindow(QWidget *parent = 0);
   ~MainWindow();
 
   void timerEvent( QTimerEvent *event );
 
private:
   Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
 

MainWindow.cpp
Код
C++ (Qt)
 
#include <QDebug>
#include "MainWindow.h"
#include "ui_MainWindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
   startTimer( 5000 );
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::timerEvent(QTimerEvent *event)
{
   qDebug() << "timerEvent";
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.165 секунд. Запросов: 20.