как использовать QTimer без приложения QT

0

Я хочу использовать QTimer в своем обычном классе (не приложение QT, но полученное из QTimer). но когда я пробую это:

Заголовок:

#include <qtimer.h>
QTimer* m_timer;
public slots:
    void UpdateClock();

Источник:

    m_timer = new QTimer(this);
    QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(UpdateClock()));
    m_timer->start(1000);

void MyClass::UpdateClock()
{
    int i = 0;
}

таймер никогда не перескакивает в метод UpdateClock! Вы знаете, почему и как я решаю эту проблему?

Благодарю!

  • 0
    если ваше приложение основано на событиях, тогда связывайтесь с qt и следуйте предложениям, данным ответом. В противном случае, почему бы просто не использовать sleep()
Теги:
timer
qt

2 ответа

5

QTimer зависит от QCoreApplication. Если вы не запустите QCoreApplication, ничего не активирует QTimer. (QApplication наследует QCoreApplication и обычно используется.)

  • 0
    о, это плохо, потому что у меня нет GUI. так как я могу получить (нью-йорк) таймер, хотя?
  • 0
    QCoreApplication. Приложения с графическим интерфейсом используют QApplication, QCoreApplication для вас.
Показать ещё 4 комментария
4

Если вы хотите использовать сигналы и слоты в Qt, вам нужен цикл событий для обработки сигналов и отправки их.

Обычно в main.cpp у вас есть что-то вроде:

int main( int argc, char** argv )
{
    QApplication app(argc, argv);
    ...
    return app.exec(); // the event loop is started and runs here
}

Если нет необходимости в графическом интерфейсе, вы можете использовать

QCoreApplication

Вы также можете создать свой собственный цикл событий, используя:

QEventLoop

http://qt-project.org/doc/qt-4.8/qeventloop.html и обрабатывать только событие QTimer. Однако вам все равно нужно создать QApplication.

  • 0
    спасибо, но у меня нет основного метода, так как я могу использовать его в своем классе? ну, у меня есть метод main, но только в TestApplication, и я хочу, чтобы таймер был внутри моего класса.
  • 0
    Просто используйте QCoreApplication в вашем основном методе в TestApplication или там, где находится main.cpp. После этого вы можете использовать QTime в любом месте вашего кода :-)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню