मैं क्यूटी के लिए बिल्कुल नया हूं। मैंने मौजूदा क्यूटी एप्लिकेशन में कुछ सरल संशोधन किए हैं, लेकिन मैंने अभी तक स्क्रैच से कोई भी नहीं बनाया है।
मुझे सामान्य रूप से सी ++ के कुछ पहलुओं (वर्ग विरासत इत्यादि) के साथ वास्तव में बहुत अधिक अनुभव नहीं है।क्यूटीमर :: सिंगलशॉट() दिए गए ऑब्जेक्ट के पैरेंट क्लास में निर्दिष्ट स्लॉट की तलाश करता है, न कि ऑब्जेक्ट स्वयं
मैंने एक नया कोड :: ब्लॉक 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')
मैं पता नहीं कैसे इस से निपटने के लिए। पहले ही, आपका बहुत धन्यवाद।
+1 * MOC फ़ाइल * उल्लेख के लिए! कक्षा घोषणा में 'Q_OBJECT' डालकर क्यूमेक नहीं कहा जाता है, उदाहरण के लिए जब सीएमके के साथ निर्माण होता है। – Melebius
@Melebius इसके लिए, आपको 'QT4_WRAP_CPP' का उपयोग करने की आवश्यकता है, इसलिए सेमेक हेडर को पार्स करेगा, और एमओसी फाइलें उत्पन्न करेगा। –