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

fileeltpathlistと txt だけをstr抽出したもので、char*変換しQFileInfoて取るだけchar*です。ちなみに、変換する"/"文字列の後の末尾に がありません。char*

変換する関数strchar*次のとおりです。

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

ありがとう

4

0 に答える 0