0

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

fileeltpathlistand txt 的一个摘录,只是一个strtochar*转换,QFileInfo只取char*. 顺便说一句,要转换"/"的字符串后面的末尾缺少。char*

要转换str为的函数char*是:

char *PulsDeviceMngr::convertQStr2char(QString str) {
    return const_cast<char*>(std::string( str.toUtf8().constData() ).c_str());
}

谢谢

4

0 回答 0