我QFileInfo
在尝试实现拖放时使用,奇怪的是有时信息是正确的,而在检查同一路径时则不是。
下面是代码:
void MyTreeWidget::CopyFilesFromLocal(QStringList pathList, QTreeWidgetItem* item)
{
QString fileelt;
uint32_t Folder_id = INVALID;
PulsTreeWidgetItem* myItem = dynamic_cast<MyTreeWidgetItem*>(item);
uint32_t destination_id = myItem->mtp_item_id;
item->setExpanded(true);
qDebug() << "**************************************";
qDebug() << "Send to device Start";
qDebug() << "Start of Loop to copy files";
foreach(fileelt, pathList)
{
char *txt = NULL;
qDebug() << "elt to be analyzed: " << fileelt;
txt = strdup(m_device.convertQStr2char(fileelt));
qDebug() << "elt converted to char*: " << txt;
QFileInfo fileInfo(txt);
qDebug() << "QFileInfo: " << fileInfo.absoluteFilePath();
qDebug() << "QFileInfo: " << fileInfo.absolutePath();
if(fileInfo.isDir())
{
QStringList tmpfolderlist;
QString tmpfoldername = NULL;
我正在尝试移动包含一些内容的文件夹。的第一个元素pathlist
是文件夹本身。
fileInfo.isDir
即使我试图移动同一个文件夹,也等于 true 或 false。
只有我注意到的事情:
fileelt(string): "/Users/seb/Pictures/Photos/20131124 - SchoolClassPhoto/"
txt (char*): /Users/seb/Pictures/Photos/20131124 - SchoolClassPhoto
fileelt
是pathlist
and txt 的一个摘录,只是一个str
tochar*
转换,QFileInfo
只取char*
. 顺便说一句,要转换"/"
的字符串后面的末尾缺少。char*
要转换str
为的函数char*
是:
char *PulsDeviceMngr::convertQStr2char(QString str) {
return const_cast<char*>(std::string( str.toUtf8().constData() ).c_str());
}
谢谢