QT

2013-10-10 7 views
11

का उपयोग करके प्रत्येक 15 सेकंड के बाद फ़ंक्शन को कॉल करने के लिए कैसे करें मुझे पता है कि मेरा प्रश्न इस QUESTION के समान है लेकिन मुझे वहां से समाधान नहीं मिल रहा है। क्या कोई मेरी समस्या का एक ब्रीफ जवाब दे सकता है?QT

मैं इस

void myWidget::showGPS() 
{ 

/* This function will read data from text file 
     that will continuouly change over time 
      then process its data */ 

} 

मैं सच करने के लिए बूलियन स्थापित करने की त्वरित और गंदा विधि का उपयोग कर के बिना इस समारोह हर 15-20 सेकंड कॉल करना चाहते हैं की तरह एक समारोह है।

इस का उपयोग करते हुए क्यूटी संकेत और टाइमर या कि

+1

आप अभी भी QTimer का उपयोग कर सकते हैं? बस अपना समय अंतराल 15 सेकंड में सेट करें? और अपने कनेक्ट को टाइमर के साथ "कनेक्ट" के माध्यम से लिंक करें? (आपके द्वारा प्राप्त लिंक के समान। –

+0

उदाहरण QTimer –

उत्तर

17

विधि showGPS() की तरह कुछ के साथ स्लॉट लागू करने के लिए कोई तरीका है, MyWidget वर्ग के एक स्लॉट बनाया जाना चाहिए। फिर, यह सिर्फ QTimer कक्षा का उपयोग करने का मामला है।

QTimer *timer = new QTimer(this); 
    connect(timer, SIGNAL(timeout()), myWidget, SLOT(showGPS())); 
    timer->start(15000); //time specified in ms 

उपर्युक्त कोड showGPS(), हर 15 सेकंड को कॉल करेगा। चूंकि कॉल आवधिक है, इसलिए आपको setSingleShot() विधि का उपयोग करके टाइमर को एक शॉट मोड में सेट करने की आवश्यकता नहीं है।

संपादित करें:

यह एक सरल POC है, तो आप इसे समझने में मदद करने ..

#include <QApplication> 
#include <QtGui> 
#include <qobject.h> 

class MyWidget : public QWidget 
{ 
    Q_OBJECT 

public: 
    MyWidget() 
    { 
     timer = new QTimer(this); 
     QObject::connect(timer, SIGNAL(timeout()), this, SLOT(showGPS())); 
     timer->start(1000); //time specified in ms 
    } 

public slots: 
    void showGPS() 
    { 
     qDebug()<<Q_FUNC_INFO; 
    } 

private: 
    QTimer *timer; 
}; 


int main(int argc, char **args) 
{ 
    QApplication app(argc,args); 
    MyWidget myWidget; 


    return app.exec(); 
} 
+0

के लिए दस्तावेज़ों पर हैं। बहुत धन्यवाद। मेरी समस्या आपके समाधान द्वारा हल की गई है। – Bavani

2

आप, फ़ाइल परिवर्तनों की जांच करने के लिए QTimer उपयोग कर सकते हैं आपके मामले में QFileWatcher बेहतर समाधान हो सकता।

+0

आपके सुझाव के लिए धन्यवाद। मैं उपयोग करने का प्रयास करूंगा। – Bavani

+0

अपडेट की दर के आधार पर फ़ाइल, हो सकता है कि आप अपडेट को सीमित करना चाहें। बदले में बदले में 'क्यूटीमर' शामिल होगा। –

संबंधित मुद्दे