2014-02-17 33 views
0

我有一個包含QDateTime變量的結構tTimeMods。我有一個函數返回這個結構。我得到一個編譯錯誤,在標題中提到的那樣,在FOLL線內compareTimeMods(tTimeMods timeTypeFunction): -無法將參數1從QDateTime轉換爲'tTimeMods'

QString pathString = appendWithImageName(timeTypeFunction.dateTimeMod1); 

能否請你告訴我如何解決這個問題?這裏是我的代碼: -

mainwindow.h

#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 

mainwindow.cpp

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); 
     } 
    } 

回答

0

appendWithImageName()功能需要tTimeMods類型(如timeTypeFunction)的變量。

您改爲傳入變量timeTypeFunction.dateTimeMod1,該變量的類型爲QDateTime,因此爲錯誤。因爲這appendWithImageName()功能本身提取從結構的dateTimeMod1成員的信息

QString pathString = appendWithImageName(timeTypeFunction); 

看起來像你預期的呼叫應改爲從:

QString pathString = appendWithImageName(timeTypeFunction.dateTimeMod1); 

到傳遞給它。

相關問題