【问题标题】:no matching function for call to 'QDomDocument::createElement(<unresolved overloaded function type>)'没有匹配的函数调用'QDomDocument::createElement(<unresolved 重载函数类型>)'
【发布时间】:2014-03-27 09:25:43
【问题描述】:

我目前正在尝试将一些 QLineEdits 的值放入 XML 文档中。我为此使用 QDom。这是我的代码:

void MainWindow::writeSysConf(const QString &arg1){
QFileDialog fdExport;

QString filename = fdExport.getSaveFileName(
        this,
        tr("SysConf-Konfig speichern"),
            arg1,
        tr("Konfigurationsdatei (*.xml)") );

if( !filename.isNull()) {
    QFile::remove(filename);
    if ( !filename.endsWith(".xml", Qt::CaseInsensitive))
        filename += ".xml";
    QFile file(filename);
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream outPut(&file);
    QDomDocument xmlDocument;

    QDomElement sysConfigElement = xmlDocument.createElement("SYSTEMCONFIGURATION");
    QDomElement calibElement = xmlDocument.createElement("CALIB");
    QDomElement crescendoElement = xmlDocument.createElement("CRESCENDO");
    QDomElement swellsElement = xmlDocument.createElement("SWELLS");
    sysConfigElement.appendChild(calibElement);
    calibElement.appendChild(crescendoElement);

    QDomNode minNode = xmlDocument.createElement(ui->lineEdit_2->text);
    QDomNode maxNode = xmlDocument.createElement(ui->lineEdit_3->text);
    QDomNode stepsNode = xmlDocument.createElement(ui->lineEdit_4->text);
    QDomNode updateMsNode = xmlDocument.createElement(ui->lineEdit_5->text);

    crescendoElement.appendChild(minNode);
    crescendoElement.appendChild(maxNode);
    crescendoElement.appendChild(stepsNode);
    crescendoElement.appendChild(updateMsNode);

    calibElement.appendChild(swellsElement);

    xmlDocument.appendChild(sysConfigElement);
    outPut << xmlDocument.toString(4);
}

}

但是,在这四行:

QDomNode minNode = xmlDocument.createElement(ui->lineEdit_2->text);
QDomNode maxNode = xmlDocument.createElement(ui->lineEdit_3->text);
QDomNode stepsNode = xmlDocument.createElement(ui->lineEdit_4->text);
QDomNode updateMsNode = xmlDocument.createElement(ui->lineEdit_5->text);

它说我会尝试使用未解析的重载函数类型将其放入我的 QDomNodes。但是,据我所知,QLineEdits 返回一个 QString。那么问题出在哪里?

【问题讨论】:

  • 您是否正确链接到 QtXml* 库?
  • 已经解决了,几秒钟后会写出我的解决方案。这实际上是非常明显的。
  • 你错过了()吗?
  • 没错。 text 应该是 text()

标签: c++ qt qtxml qdomdocument


【解决方案1】:

修复它。您只需要在 ui->lineEdit->text 后面添加一个 () ,因为它是一个函数。所以我的正确方式看起来像这样:

QDomNode minNode = xmlDocument.createElement(ui->lineEdit_2->text());
QDomNode maxNode = xmlDocument.createElement(ui->lineEdit_3->text());
QDomNode stepsNode = xmlDocument.createElement(ui->lineEdit_4->text());
QDomNode updateMsNode = xmlDocument.createElement(ui->lineEdit_5->text());

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多