我将QVector从一个窗口传递到另一个窗口,我想将前一个窗口中存在的QVector中的值附加到当前窗口中的QString。我在执行添加no match for 'operator+'
时收到错误。
这是我的代码:
Window1.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;
}
Window2.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());
}
}
帮助我,谢谢...
答案 0 :(得分:1)
假设SOFTWARELIST
是一个简单的QString:
QString fileName = QString( "%1/%2" )
.arg( ss->os.last() )
.arg( SOFTWARELIST );
这意味着您要创建一个包含占位符%1
和%2
的QString,其中%1
将替换为ss->os.last()
的结果,该结果将返回向量中的最后一项, %2
将替换为SOFTWARELIST
。
如果SOFTWARELIST
也是矢量,则需要拨打电话,例如.last()
也是如此。
答案 1 :(得分:0)
QVector是一个容器类,它包含 set 的东西。在你的示例QString集中。那么你尝试形成一个文件名,这是一个QString,你显然无法添加到其他Qstring的fileName QString列表中。 (真的说你可以,但不能用&#39; +&#39;运算符和稍微不同的代码)。 老实说,如果你只需要一个我建议只使用QString的应用程序路径,我没有立即知道你实际传递QVector的原因。