0
我在Qt中遇到一個異常(v4.8.4)時重新分配給預先存在的QDir對象的新路徑。下面是一個例子降低這表明:的QDir :: VS的setCurrent :: QFileInfo
QString path1("F:/"); //Path must exist...
QString path2("F:/Some/Valid/Path/For/You/"); //Path must exist...
//Set default...
QFileInfo fi1(path1);
QDir d(fi1.absoluteDir());
//CASE 1...
if(!d.setCurrent(path2)) {
qDebug() << QString("Cannot set path (%1)").arg(path2).toAscii().data();
return -1;
}
qDebug() << "CASE 1:";
qDebug() << QString("path2: %1").arg(path2).toAscii().data();
qDebug() << QString("d : %1").arg(d.absolutePath()).toAscii().data();
//END of CASE 1...
//CASE 2...
QFileInfo fi2(path2);
d = fi2.absoluteDir();
qDebug() << "CASE 2:";
qDebug() << QString("path2: %1").arg(path2).toAscii().data();
qDebug() << QString("d : %1").arg(d.absolutePath()).toAscii().data();
//END of CASE 2...
即使到d.setCurrent(PATH2)返回真正通話,新的路徑沒有在一個QDir對象設置。 OTOH,指定新的路徑1日到QFileInfo對象,然後調用absoluteDir()該對象上返回一個更新的QDir對象。
可以然後直接將返回的對象預先存在的QDir對象(通過重寫賦值運算符),並在一個QDir對象的路徑將被正確更新。
爲什麼CASE 1不起作用?
的確!我實際上錯過了 - setCurrent適用於應用程序的「工作目錄」。謝謝回答。 – ObjectMonkey