2012-01-17 10 views
7

में .txt या .csv फ़ाइल से एक पंक्ति पढ़ना मुझे सिमुलेशन स्क्रीन पर एक स्ट्रिंग प्रदर्शित करने की आवश्यकता है। इसके लिए मुझे मौजूदा Filename.txt/Filename.csv फ़ाइल से टेक्स्ट पढ़ना है। पाठ पैरामीटर को कोड के नीचे दिए गए टुकड़े में दिखाए गए अनुसार अपडेट किया गया है। मुझे एक पाठ फ़ाइल से स्ट्रिंग तक पहुंचने और MarqueeText तत्व में इसका उपयोग करने की आवश्यकता है। मार्कीटेक्स्ट तत्व के टेक्स्ट फ़ील्ड में एक्सेस की गई स्ट्रिंग का उपयोग किया जाएगा।qml (Qt Quick)

MarqueeText { 
    id:scrolltext 
    width: 255 
    height: 48 
    anchors.verticalCenter: parent.horizontalCenter 
    text: //i need to access the string in text file to be displayed 
} 

कृपया मुझे इसके साथ मदद करें। धन्यवाद।

+0

कृपया जाने के लिए और सवाल आपने पहले कहा है की समीक्षा करें। अगर किसी ने आपके प्रश्न का उत्तर दिया है, तो जवाब पर निशान लगाएं। अगर किसी ने इसका उत्तर नहीं दिया है, तो कृपया अपना प्रश्न संपादित करें ताकि यह उत्तरदायी हो। –

+0

@ Styne666 क्या इस प्रश्न का उत्तर mposting कोई समस्या है। मैंने कुछ प्रश्न हटा दिए क्योंकि वे जवाब देने के लिए बहुत पुराने हैं। अब यह ठीक है? – Rahul

+0

अच्छी तरह से लोग आपके प्रश्नों का उत्तर क्यों देना चाहते हैं यदि आप कभी भी अपने उत्तरों को सही के रूप में चिह्नित नहीं करते हैं? मैं इस साइट का उपयोग कैसे करें इस बारे में एक चर्चा में प्रवेश नहीं कर रहा हूं। जाओ और संपूर्ण [एफएक्यू] (http://stackoverflow.com/faq) ** अब ** पूरी तरह से पढ़ें, जब तक आप [विश्लेषणात्मक बैज] प्राप्त नहीं करते (http://stackoverflow.com/badges/1306/ विश्लेषणात्मक)। लिंक के लिए –

उत्तर

11

क्यूएमएल में फ़ाइलों तक पहुंचने के बारे में पढ़ने के लिए विकी पेज का पालन करें। नोकिया विकी फोरम http://web.archive.org/web/20150227025348/http://developer.nokia.com/community/wiki/Reading_and_writing_files_in_QML

सारांश:

एक कस्टम QML प्रकार बनाएं FileIO:

fileio.h

#ifndef FILEIO_H 
#define FILEIO_H 

#include <QObject> 

class FileIO : public QObject 
{ 
    Q_OBJECT 

public: 
    Q_PROPERTY(QString source 
       READ source 
       WRITE setSource 
       NOTIFY sourceChanged) 
    explicit FileIO(QObject *parent = 0); 

    Q_INVOKABLE QString read(); 
    Q_INVOKABLE bool write(const QString& data); 

    QString source() { return mSource; }; 

public slots: 
    void setSource(const QString& source) { mSource = source; }; 

signals: 
    void sourceChanged(const QString& source); 
    void error(const QString& msg); 

private: 
    QString mSource; 
}; 

#endif // FILEIO_H 

fileio.cpp

#include "fileio.h" 
#include <QFile> 
#include <QTextStream> 

FileIO::FileIO(QObject *parent) : 
    QObject(parent) 
{ 

} 

QString FileIO::read() 
{ 
    if (mSource.isEmpty()){ 
     emit error("source is empty"); 
     return QString(); 
    } 

    QFile file(mSource); 
    QString fileContent; 
    if (file.open(QIODevice::ReadOnly)) { 
     QString line; 
     QTextStream t(&file); 
     do { 
      line = t.readLine(); 
      fileContent += line; 
     } while (!line.isNull()); 

     file.close(); 
    } else { 
     emit error("Unable to open the file"); 
     return QString(); 
    } 
    return fileContent; 
} 

bool FileIO::write(const QString& data) 
{ 
    if (mSource.isEmpty()) 
     return false; 

    QFile file(mSource); 
    if (!file.open(QFile::WriteOnly | QFile::Truncate)) 
     return false; 

    QTextStream out(&file); 
    out << data; 

    file.close(); 

    return true; 
} 

रजिस्टर नई QML प्रकार:

#include "fileio.h" 

Q_DECL_EXPORT int main(int argc, char *argv[]) 
{ 
    ... 
    qmlRegisterType<FileIO, 1>("FileIO", 1, 0, "FileIO"); 
    ... 
} 

वास्तविक QML उपयोग:

import QtQuick 1.1 
import FileIO 1.0 

Rectangle { 
    width: 360 
    height: 360 
    Text { 
     id: myText 
     text: "Hello World" 
     anchors.centerIn: parent 
    } 

    FileIO { 
     id: myFile 
     source: "my_file.txt" 
     onError: console.log(msg) 
    } 

    Component.onCompleted: { 
     console.log("WRITE"+ myFile.write("TEST")); 
     myText.text = myFile.read(); 
    } 
} 
+0

धन्यवाद। वास्तव में मेरी मदद की। क्या यह जांचना संभव है कि फ़ाइल कब बनाई गई थी? क्या कोई संपत्ति है जो बताती है? – SoH

+0

[QFileInfo :: बनाया गया()] (http://qt-project.org/doc/qt-4.8/qfileinfo.html#created) यह फ़ंक्शन आपको फ़ाइल जानकारी देगा। लेकिन मुझे उम्मीद है कि यह अभी भी अंतर्निहित ओएस पर निर्भर करता है। आवश्यक डेटा वापस करने के लिए आप इस फ़ाइल का उपयोग अपने फाइलियो क्लास में कर सकते हैं। – RajaRaviVarma

+0

मुझे निम्न त्रुटि मिल रही है: 'फ़ाइलियो' अनियंत्रित नामस्थान 'फ़ाइलियो' में। इसे कैसे हल करें? धन्यवाद –