繁体   English   中英

无法将参数1从QDateTime转换为'tTimeMods'

[英]cannot convert parameter 1 from QDateTime to 'tTimeMods'

我有一个包含QDateTime变量的结构tTimeMods。 我有一个函数返回此结构。 如标题中所述,在compareTimeMods(tTimeMods timeTypeFunction)内的以下代码行中,我收到一个编译错误:-

QString pathString = appendWithImageName(timeTypeFunction.dateTimeMod1);

你能告诉我如何解决这个问题吗? 这是我的代码:-

主窗口

#define UPDATED_IMAGE_STORAGE_PATH "E:\\QT1\\timeStampWithDateModified\\timeStampWithDateModified\\updatedRefImg.jpg"
#define SLEEP_TIME 2000
typedef struct
{
     QDateTime dateTimeMod1;
     QDateTime dateTimeMod2;
}tTimeMods;
tTimeMods timeTypeFunction, timeTypeMain;
tTimeMods findTimeModified();                           //returns a struct
void compareTimeMods(tTimeMods timeTypeFunction);       //takes struct as parameter
QString appendWithImageName(tTimeMods timeTypeFunction);//takes struct as parameter

主窗口

tTimeMods findTimeModified()
{
    QString myFileName = UPDATED_IMAGE_STORAGE_PATH;
    QFileInfo info(myFileName);

    /*find last date modified*/
    //QDateTime dateTimeMod1, dateTimeMod2;
    timeTypeFunction.dateTimeMod1 = info.lastModified();
    timeTypeFunction.dateTimeMod2 = info.lastModified();

    /*find last time modified*/
    //QDateTime timeMod1, timeMod2;
//    timeTypeFunction.timeMod1 = (timeTypeFunction.dateTimeMod1).time();
//    timeTypeFunction.timeMod2 = timeTypeFunction.dateTimeMod2.time();

    /*return the time part of date time*/
    qDebug()<< "dateTimeMod1: " << timeTypeFunction.dateTimeMod1.toString() << endl << "dateTimeMod2: "<< timeTypeFunction.dateTimeMod2.toString();
//    qDebug()<< "timeMod1: " << timeTypeFunction.timeMod1.toString() << endl << "timeMod2: "<< timeTypeFunction.timeMod2.toString();
    return(timeTypeFunction);
}    

void compareTimeMods(tTimeMods timeTypeFunction)
    {
        //if(timeMod2 > timeTypeFunction)
        if(timeTypeFunction.dateTimeMod2 > timeTypeFunction.dateTimeMod1)
        {
            timeTypeFunction.dateTimeMod1 = timeTypeFunction.dateTimeMod2;
            QString pathString = appendWithImageName(timeTypeFunction.dateTimeMod1);
            shiftToRepository(pathString);
        }
    }

    QString appendWithImageName(tTimeMods timeTypeFunction)
    {
       /*appending just the timeMod with the path & image name*/
       QString path = QString("E:\\QT1\\timeStampWithDateModified\\timeStampWithDateModified\\backUp\\updatedRefImg[%1].jpg").arg(timeTypeFunction.dateTimeMod1.toString());
       return path;
       //qDebug()<< "path: " << path;
    }

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        //QDateTime timeModified = findDateModified();    //CHECK->this shud give two QDateTime variables to compateTimeMods
        timeTypeMain = findTimeModified();
        while(1)
        {
            Sleep(SLEEP_TIME);
            compareTimeMods(timeTypeMain);
        }
    }

您的appendWithImageName()函数需要一个类型为tTimeMods的变量(例如timeTypeFunction )。

相反,您传递的是类型为QDateTime的变量timeTypeFunction.dateTimeMod1 ,因此发生错误。

看起来像你预期的呼叫应该被改变:

QString pathString = appendWithImageName(timeTypeFunction.dateTimeMod1);

至:

QString pathString = appendWithImageName(timeTypeFunction);

因为该appendWithImageName()函数本身从传递给它的结构的dateTimeMod1成员中提取信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM