1

我将 QVector 从一个窗口传递到另一个窗口,我想将 QVector 中存在的值从前一个窗口附加到当前窗口中的 QString。执行添加时出现错误no match for 'operator+'

这是我的代码:

窗口1.cpp

void SelectOS::processNextButton()
{
    if(ui->win32->isChecked()){
        QString path;
        path = qApp->applicationDirPath()+"/WIN/32Bit";
        so->osName.push_back(path);
        SelectSoftware *ss = new SelectSoftware();
        this->hide();
        ss->show();
    }
}

QVector<QString> SelectOS::getosName(){
    so = new SelectOS();
    return so->osName;
}

窗口2.cpp

void SelectSoftware::getSoftwareDetails()
{

    SelectOS *so = new SelectOS();
    SelectSoftware *ss = new SelectSoftware();
    ss->os = so->getosName();

    QString fileName = ss->os + "/" +SOFTWARELIST; // Here I get the error...

    QFile file(fileName);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        QString msg = "Could not find the file " + fileName;
        errorExit(msg);
    }

    QTextStream in(&file);
    while (!in.atEnd()) {
        QString line = in.readLine();
        processLine(line.toLower());
    }
}

帮帮我,谢谢...

4

2 回答 2

1

假设SOFTWARELIST是一个简单的 QString:

QString fileName = QString( "%1/%2" )
                  .arg( ss->os.last() )
                  .arg( SOFTWARELIST );

这意味着您正在创建一个带有占位符的 QString ,%1where%2%1被替换为ss->os.last()返回向量中最后一项的结果,%2并将被替换为任何SOFTWARELIST内容。

如果SOFTWARELIST也是一个向量,你也需要调用.last()它。

于 2013-04-12T06:54:12.057 回答
0

QVector 是一个容器类,它包含一组东西。在您的一组 QString 示例中。那么你尝试形成一个文件名,它是一个 QString,你显然不能添加到其他 Qstring 的文件名 QString 列表中。(真的说你可以,但不能使用 '+' 运算符和稍微不同的代码)。老实说,如果你只需要一个应用程序路径,我并没有马上明白为什么你实际上传递了 QVector,我建议只使用 QString。

于 2013-04-12T07:06:26.310 回答