如何在 QTextEdit 中传递 JSON 对象
Posted
技术标签:
【中文标题】如何在 QTextEdit 中传递 JSON 对象【英文标题】:How to pass a JSON object inside a QTextEdit 【发布时间】:2020-07-29 14:42:21 【问题描述】:我有一个小 GUI 用来加载/保存json
配置文件,最重要的参数在下面的 gui 中:
![配置]
问题我一直试图解决的问题是我无法在 QTextEdit
内创建对象,并且不知道为什么尽管我关注 official documentation 以了解如何做到这一点.
加载和保存按钮的代码如下。 另外,为了简洁起见,我只保留了旋转框的制作方式,当然还有 textedit:
void SettingsForm::on_loadBtn_clicked()
// Opening file dialog....
if(listDocksConfig.isEmpty())
QMessageBox::information(this, tr("Message"), tr("Please Open Configuration"));
else
QJsonDocument doc;
QJsonObject obj;
QByteArray data_json;
QFile input(listDocksConfig);
if(input.open(QIODevice::ReadOnly | QIODevice::Text))
data_json = input.readAll();
doc = doc.fromJson(data_json);
obj = doc.object();
const double xposValue = obj["X Pos"].toDouble();
QTextEdit textEdit = QTextEdit::setText(obj["comments"]); // <- Error Here
ui->doubleSpinBox_XPos->setValue(xposValue);
ui->textEdit->setText(textEdit); // <- Error Here
else
// do something
void SettingsForm::on_saveBtn_clicked()
// saving configuration with file dialog....
if(listDocksConfig.isEmpty())
// do something...
else
const double xposValue = ui->doubleSpinBox_XPos->value();
QTextEdit textEdit = ui->textEdit->setPlainText(); // <- Error Here
QJsonDocument doc;
QJsonObject obj;
obj["X Pos"] = xposValue;
obj["comments"] = textEdit.toString(); // <- Error Here
doc.setObject(obj);
QByteArray data_json = doc.toJson();
QFile output(listDocksConfig);
到目前为止我做了什么:
我咨询了official documentation 以了解如何解决此问题,但无法弄清楚为什么这不起作用。我也继续尝试使用setText 等替代方法,但仍然没有运气。
我遇到了this source,我将其用作示例的指导,并解决了几乎所有问题,但QTextEdit
除外。
This 附加帖子很有用,但仍然无法解决问题。
感谢您指出解决此问题的正确方向。
【问题讨论】:
【参考方案1】:这行错了!!
QTextEdit textEdit = ui->textEdit->setPlainText();
-
setPlainText() 需要 const QString &text 作为参数
你不能这样做,阅读official doc here
方法无效,即。它不返回任何内容,因此您不能使用 void 来初始化
QTextEdit
对象
更新:
您已经在布局中有一个 textEdit,所以没有理由重新定义一个...
你可以这样做:
ui->textEdit->setPlainText(obj["comments"].toString());
【讨论】:
感谢您访问并阅读问题。错误从QTextEdit textEdit = QTextEdit::setText(obj["comments"]);
行的开头开始,错误显示:error: no matching function for call to ‘QTextEdit::setText(QJsonValueRef)’ QTextEdit textEdit = QTextEdit::setText(obj["comments"]);
你看到了我没看到的东西吗?
@Emanuele 是的,我看到了问题,...但是您发布的代码不是正确的...
@Emanuele 我用 json 值更新了我的答案...试试看更新我
是的,有效:) 非常感谢您的宝贵时间!以上是关于如何在 QTextEdit 中传递 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React/Redux 中获取和传递对象(JSON API)?
如何使用android studio中的改造服务在请求中传递json
python PyQt4中如何获得QTextEdit的内容获得QLineEdit的内容有QLineEdit.text(),那QTextEdit呢?