2014-09-20 117 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

相關問題