2014-09-20 61 views
0

我已经浏览了Qt文档,但是在我的项目中,我希望让我的大部分非图形的“更多思考”部分程序在单独的.cpp文件上。 鉴于这种情况,我是想采取键入到QLineEdit的对象的文本,它的用户触发“returnPressed”行动后保存为一个字符串,但是当我键入:将QLineEdit对象的内容保存为字符串变量(C++)

void MainWindow::on_lineEdit_returnPressed() 

{ 
    QMessageBox msgBox; 
    msgBox.setText("The entry has been modified."); 
    msgBox.exec(); 
    //The line which should save the contents of the QLineEdit box: 
    string input = QLineEdit::text(); 
} 

...到模板由Qt Creator IDE提供(带有希望创建的所有必需插槽)编译器返回

In member function 'void MainWindow::on_lineEdit_returnPressed()' 
cannot call member function 'QString...' 

...等等。

我该如何重写我的代码才能正确执行此操作?

回答

0

怎么样:

lineEdit->text().toStdString() 
+1

这将是很好如果你可以详细说明为什么这是正确的,为什么提问者的代码不起作用。 – 2014-09-20 23:25:01

+0

我应该如何将你的功能应用到我的代码中? – 2014-09-21 00:09:13

2
  1. 您必须选择如何存储的字符串。你的主要选项是:来自标准库的char s,std :: string和Qt的QString。如果你需要在第三方库中使用字符串,那么你可能需要将它存储在一个std :: string或一个数组012中,但如果情况并非如此,那么我建议你简单地使用QString,因为它是广泛的尽管你可以将QString转换为std :: string或者数组char s。

  2. 您必须实际检索文本。为此,您必须在QLineEdit实例上调用text()函数,而不是在QLineEdit类本身上调用。所有小部件都可以通过ui指针访问。打开设计师和检查线路编辑的名称,默认名称为lineEdit,所以尽量用线替换线

string input = QLineEdit::text();

QString input = ui->lineEdit->text();

+0

你的方法运行良好,但我应该如何将QString类型转换为std :: string? – 2014-09-21 01:33:01

+0

稍作修改:std :: string input = ui-> lineEdit-> text()。toStdString(); – 2014-09-21 02:05:55

+0

我输入了杜比的想法,但现在创建者正在给我一个'从'QString'转换为非标准类型'std :: string'所请求'错误的转换。现在有什么可能是错误的? – 2014-09-21 17:13:30

相关问题