如何在qt中使用时间戳保存图像

如何在qt中使用时间戳保存图像,qt,timestamp,save-image,datestamp,Qt,Timestamp,Save Image,Datestamp,我正在为windows PC创建GUI。我想在PC上存储一系列图像。图像的名称相同。但是我想给它们加上时间戳。那么,如何在Qt中使用时间戳保存图像呢? 除此之外,还应保存图像,如以下示例所示: 参考图像 其中日期和时间对应于图像在windows PC上保存的日期和时间。我也尝试了以下方法 在这里,我通过点击按钮实现了这一点:- void MainWindow::on_generateImagePushButton_clicked() { QDate date = QDat

我正在为windows PC创建GUI。我想在PC上存储一系列图像。图像的名称相同。但是我想给它们加上时间戳。那么,如何在Qt中使用时间戳保存图像呢? 除此之外,还应保存图像,如以下示例所示: 参考图像 其中日期和时间对应于图像在windows PC上保存的日期和时间。我也尝试了以下方法

在这里,我通过点击按钮实现了这一点:-

    void MainWindow::on_generateImagePushButton_clicked()
    {
    QDate date = QDate::currentDate();
    QString dateString = date.toString();
    QString path = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1].jpg").arg(dateString);
    qDebug()<<"path: "<<path;

    /*display current time*/
    QTime time = QTime::currentTime();
    QString timeString = time.toString();
    QString path2 = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1 %2].jpg").arg(dateString).arg(timeString);
    qDebug()<<"path2: "<<path2;

    /*converting from QString to char* */
    QByteArray bA = path2.toLocal8Bit();
    const char *c_charArray = bA.data();


    /*saving image*/
    IplImage *imgWithTimeStamp = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);
    cvSaveImage(c_charArray, imgWithTimeStamp);

    }
现在我刚刚想起,图像不能用特殊字符保存,比如冒号:它在时间戳中。时间格式可以更改吗? 我试着这样做:

path2.replace(":","-");
但E:\也会转换为E-。请引导。谢谢你

const QDateTime now = QDateTime::currentDateTime();
const QString timestamp = now.toString(QLatin1String("yyyyMMdd-hhmmsszzz"));
const QString filename = QString::fromLatin1("/some/path/someimage-%1.jpg").arg(timestamp);
这将获取当前日期/时间,使用文档将其转换为字符串,列出格式选项并从中构造文件名。 然后将文件名与或一起使用


感谢您的所有建议@Dmitri Sazonov和@Frank Osterfeld

Qt,而不是Qt。您应该展示代码示例,并更详细地描述问题。另外,@DmitrySazonov,您能告诉我哪里不够清楚吗?那么,我会作出相应的修正。谢谢。请阅读有关sprintf参数的文档。它不接受Qt类型。这样的技巧可以通过下一种方式完成:QString path=QString E:\\Somdir\\..\\refImg[%1].jpg.arg dateString;。我建议您阅读一些关于C/C++的基本书籍,以避免此类问题。并学习如何进行逐步调试。Thanks@Frank,我得到一个关于QStringTerral的错误,它没有在作用域中声明。我已经包括了Qstring标题,但没有用。我尝试用QString本身替换QStringTerral,请原谅,如果我使用了错误的方法,我是新的,那么我会得到以下错误:QString::arg:缺少参数:.jpg,20140203-1521120您能帮忙吗?正如您所说,我使用QImage保存。QImage*图像=新的QImage;图像->保存文件名;这是保存图像的正确方法,我希望?QStringLiteral在Qt5中是新的,我将调整它以使其适用于Qt4。您的代码创建了一个空映像,您应该在堆栈(而不是堆)上创建该映像,然后将其保存,这样就不会有任何内容了。所以你需要先获得你的图像,然后才能保存它;那太好了。为了保存部分,我插入了一个字符串,而不是文件名。对于参数,您需要将%1添加到字符串中,在需要时间戳的位置。
const QDateTime now = QDateTime::currentDateTime();
const QString timestamp = now.toString(QLatin1String("yyyyMMdd-hhmmsszzz"));
const QString filename = QString::fromLatin1("/some/path/someimage-%1.jpg").arg(timestamp);
    /*display current date*/
    QDate date = QDate::currentDate();
    QString dateString = date.toString();
    QString path = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1].jpg").arg(dateString);
    qDebug()<<"path: "<<path;

    /*display current time*/
    QTime time = QTime::currentTime();
    QString timeString = time.toString();
    QString path2 = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1 %2].jpg").arg(dateString).arg(timeString);
    qDebug()<<"path2: "<<path2;

    path2.replace(":","-");
    path2.replace(1,1,":");
    QByteArray bA = path2.toLocal8Bit();
    const char *c_charArray = bA.data();
    IplImage *imgWithTimeStamp = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);
    cvSaveImage(c_charArray, imgWithTimeStamp);