2016-10-16 10 views
0

I унаследовать класс от QwtScaleDraw, чтобы показать ось даты-время:QWT даты-временная ось

class TimeScaleDraw: public QwtScaleDraw { 
public: 
TimeScaleDraw(const QDateTime &base) : baseDateTime(base) { 
    setLabelRotation(0); 
    setLabelAlignment(Qt::AlignHCenter | Qt::AlignVCenter); 
    setSpacing(20); 
} 
virtual QwtText label(double v) const { 
    QDateTime dateTime; 
    dateTime = dateTime.fromTime_t(v); 
    return dateTime.toString("yyyy.MM.dd\nhh:mm:ss"); 
} 
private: 
QDateTime baseDateTime; 
}; 

В главном файле я использую его как:

funPlot->setAxisScaleDraw(QwtPlot::xBottom, new TimeScaleDraw(QDateTime::currentDateTime())); 

Я хочу видеть текущую дату- когда я запускаю приложение. Является ли это возможным? Теперь он отображается как 1970.01.00 00:00:00 с соответствующим масштабом.

ответ

0

Попробуйте распечатать то, что вы проходите как double v, вероятно, просто не может быть преобразован в QDateTime. Вы должны добавить эти секунды в baseDateTime.

virtual QwtText label(double v) const { 
    QDateTime dateTime = baseDateTime.addSecs(v); 
    return dateTime.toString("yyyy.MM.dd\nhh:mm:ss"); 
}