本文从我原先发布在 CSDN 的文章迁移而来,原文链接:https://blog.csdn.net/wang112031/article/details/103323765。
QCustomPlot QCPAxisTicker 是用于创建刻度位置和刻度标签的基类,子类和刻度格式如下图


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString DateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz");
qDebug()<<"DateTime"<<DateTime;
qint64 ms = QDateTime::currentDateTime().toMSecsSinceEpoch();
qint64 sec = QDateTime::currentDateTime().toSecsSinceEpoch();
qDebug()<<"ms:"<<ms<<"sec"<<sec;
QString DateTimeStr = QDateTime::fromMSecsSinceEpoch(ms).toString("yyyy-MM-dd HH:mm:ss:zzz");
qDebug()<< DateTimeStr;
QSharedPointer<QCPAxisTickerDateTime> dateTimeTicker(new QCPAxisTickerDateTime);
//dateTimeTicker->setTickOrigin(ms/1000.0);
//设置时间刻度值格式 格式参考QDateTime
dateTimeTicker->setDateTimeFormat("yyyy-MM-dd hh:mm:ss:zzz");
dateTimeTicker->setTickCount(10+1);
//设置刻度显示策略 QCPAxisTicker::tssReadability 可读性优先于setTickCount
//QCPAxisTicker::tssMeetTickCount 牺牲可读性使用setTickCount
dateTimeTicker->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
ui->plot->xAxis->setTicker(dateTimeTicker);
//设置刻度标签顺时针旋转30度
ui->plot->xAxis->setTickLabelRotation(30);
ui->plot->xAxis->setSubTicks(false);
ui->plot->xAxis->setRange(sec, sec+3600);
ui->plot->addGraph();
ui->plot->replot();
QTimer *updateTimer = new QTimer(this);
connect(updateTimer, SIGNAL(timeout()), this, SLOT(slotUpdateTimer()));
updateTimer->start(100);
}
void MainWindow::slotUpdateTimer()
{
qint64 sec = QDateTime::currentDateTime().toSecsSinceEpoch();
qint64 ms = QDateTime::currentDateTime().toMSecsSinceEpoch();
qsrand((uint)(ms&0xffffffff));
ui->plot->graph(0)->addData(ms/1000.0, qrand()%100);
ui->plot->graph(0)->rescaleAxes();
ui->plot->replot();
}
回复 / 留言