我查看了 Qt 文档,但在我的项目中,我希望我的程序的大部分非图形“更多思考”部分位于单独的 .cpp 文件中。鉴于此,我想在用户触发“returnPressed”操作后将输入到 QLineEdit 对象中的文本保存为字符串,但是当我输入时:
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...'
… 等等。
我应该如何重写我的代码才能正确地做到这一点?
原文由 Air Conditioner 发布,翻译遵循 CC BY-SA 4.0 许可协议
您必须选择如何存储字符串。您的主要选项是:
char
s 的数组,标准库中的 std::string 和 Qt 中的 QString。如果您需要在第三方库中使用字符串,那么您可能需要将其存储在 std::string 或char
的数组中,但如果不是这种情况,那么我建议您只需使用 QString,因为它在整个 Qt 中被广泛使用,尽管您可以将 QString 转换为 std::string 或char
s 的数组。您必须实际检索文本。为此,您必须在 QLineEdit 实例上调用 text() 函数,而不是在 QLineEdit 类本身上。所有小部件都可以通过
ui
指针访问。打开设计器查看行编辑的名称,默认名称是lineEdit
,所以换行试试string input = QLineEdit::text();
用线
QString input = ui->lineEdit->text();