Girilen verileri bir Qt4 UI'de bir dosyaya yazma

QtSDK kullanarak bir kullanıcı arayüzü oluşturdum ve şimdi kullanıcı tarafından kullanıcı tarafından girilen verileri statik bir dosyaya aktarmak istiyorum. Bunu nasıl yapabilirim? Örneğin, denedim:

ofstream myfile ("C:\\testcase.txt"); 
if (myfile.is_open()) {
    myfile << "ui->lineEdit->text()";
} else {
    cout << "Unable to open file";
}  

ve lineEdit'e girilen metni basmak yerine, dosyada olduğu gibi satırdaki çift tırnak içine yazıyor ve yazıyorsam

myfile << ui -> lineEdit -> text();

çift ​​tırnak işareti olmadan, kod aşağıdaki hatayı gösterir.

mainwindow.cpp:198: error: no match for 'operator<<' in 'myfile << QLineEdit::text() const()'

Bu nasıl yapılmalı?

0
Sorunuzu cevaplamak için kodunuzun ve/veya tam mesajınızın daha fazlasını görmeniz gerekir.
katma yazar Michael Krelin - hacker, kaynak
akış dosyam ("C: \\ testcase.txt"); if (myfile.is_open ()) {myfile << ui-> lineEdit-> text ();} else {cout << "Dosya açılamıyor";} , Iam dosyasının açıldığı kodun bir parçasıdır yazmak ve gösterilen hata C: \ QtSDK \ QtCreator \ bin \ test-build-desktop-Qt_4_7_4_for_Deskt & zwnj; op _-_ MinGW_4_4__Qt_S & zwnj; DK__Debug \ .. \ test \ ma & zwnj; inwindow.cpp: 198: hata : 'myfile' içinde 'operator <<' için eşleşme yok << QLineEdit :: text() const() '
katma yazar user976369, kaynak

2 cevap

Çift tırnak kullanarak aslında bir dize sağlar. Tırnak içindeki ifade değerlendirilmez.

Bir dosyaya yazmak için bir QTextStream kullanmalısınız.

QFile file("myfile.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    return;

QTextStream filestream(&file);
filestream << ui->lineEdit->text();

Qt Belgeleri harika, bu yüzden daha fazla ayrıntı için kontrol edin

1
katma
QDebug'un gücünü kullanın, bazı hata ayıklama ifadelerini koyun ve ne yaptığını izleyin.
katma yazar Nicholas Smith, kaynak
Bunu denedim, derleme hataları yok ama dosya oluşturulmuyor ve nedenini anlayamıyorum. Ayrıca belgeleri okuyun, yardım etmedi.
katma yazar user976369, kaynak

You probably can't << QString directly, to std::ostream. Perhaps you need something like ui->lineEdit->text()() or convert it to some standard type otherwise, look up the docs.

0
katma