Я новичок в Qt. Я внес несколько простых изменений в существующее приложение Qt, но еще не создал ни одного с нуля.
У меня также нет большого опыта работы с некоторыми аспектами C ++ в целом (наследование классов и т. Д.).
Я создал новый проект на основе Code :: Blocks Qt4 и немного изменил шаблон. Я добавил два файла.
Сейчас проект содержит три файла: main.cpp, app.h и app.cpp.
Это содержимое main.cpp :
#include <QTimer>
#include "app.h"
int main(int argc, char* argv[]) {
TestApp app(argc, argv);
QTimer::singleShot(1000, &app, SLOT(timeout()));
return app.exec();
}
Вот как выглядит app.h :
#ifndef APP_H_INCLUDED
#define APP_H_INCLUDED
#include <QApplication>
class TestApp: public QApplication {
public:
TestApp(int &argc, char **argv);
public slots:
void timeout();
};
#endif
А это app.cpp :
#include "app.h"
#include <QDebug>
TestApp::TestApp(int &argc, char **argv): QApplication(argc, argv) {
}
void TestApp::timeout() {
qDebug() << "timeout called";
}
Я ожидал, что программа распечатает «тайм-аут, вызванный» через одну секунду после запуска. К сожалению, это не работает. Когда вызывается QTimer :: singleShot ()
, консоль сообщает:
Object::connect: No such slot QApplication::timeout() in [path to the main.cpp file]
Object::connect: (receiver name: 'QtTests')
Я понятия не имею, как с этим бороться. Заранее спасибо.