2011-10-28 45 views
0

我使用QtSDK创建了一个UI,现在我想要将用户在UI中输入的数据转换为静态文件。我怎样才能做到这一点? 例如,我想:在Qt4 UI中将用户输入的数据写入文件

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

,它是印刷双引号内的线,因为它是在该文件中,而不是打印在lineEdit输入的文本的,如果我写

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

无双引号,代码显示以下错误。

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

应该怎么做?

+0

要回答你的问题,你需要看到更多你的代码和/或确切的消息。 –

+0

'ofstream myfile(“C:\\ testcase.txt”); (myfile.is_open()) {myfile << ui-> lineEdit-> text();} else {cout <<“Unable to open file”;}'是Iam打开文件进行写入的代码部分,错误显示为'C:\ QtSDK \ QtCreator \ bin \ test-build-desktop-Qt_4_7_4_for_Desktop _-_ MinGW_4_4__Qt_SDK__Debug \ .. \ test \ mainwindow.cpp:198:错误:'myfile << QLineEdit'中没有匹配'operator <<' :: text()const()'' – user976369

回答

1

通过使用双引号,你实际上提供了一个字符串。引号内的表达式不会被评估。

您应该使用QTextStream来写入文件。

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

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

Qt Documentation is great, so check it for more details

+0

试过,没有编译错误,但文件没有被创建,我不明白原因。阅读文档也没有帮助。 – user976369

+0

使用QDebug的力量,放入一些调试语句并跟踪它正在做什么。 –

0

你可能无法<<QString直接到std::ostream。也许你需要类似ui->lineEdit->text()()或将其转换为某种标准类型,否则查找文档。