QT通过odbc连接数据库获取数据并且显示成折线图的代码
时间: 2023-06-12 09:02:32 浏览: 121
以下是一个简单的示例程序,展示如何使用Qt通过ODBC连接数据库并且显示成折线图:
```cpp
#include <QtWidgets>
#include <QtCharts>
#include <QtSql>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个折线图
QChart *chart = new QChart();
chart->setTitle("Sales");
// 创建一个QChartView,用于在窗口中显示折线图
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
// 创建一个QSqlDatabase对象,用于连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={SQL Server};Server=127.0.0.1;Database=Sales;Uid=sa;Pwd=123456");
// 打开数据库
if (!db.open()) {
QMessageBox::critical(nullptr, QObject::tr("Cannot open database"),
QObject::tr("Unable to establish a database connection.\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return -1;
}
// 查询数据库中的数据
QSqlQuery query;
query.exec("SELECT * FROM SalesData");
QVector<QPointF> points;
while (query.next()) {
double x = query.value(0).toDouble();
double y = query.value(1).toDouble();
points.append(QPointF(x, y));
}
// 创建一个QLineSeries对象,用于存储折线图的数据
QLineSeries *series = new QLineSeries();
series->append(points);
// 将QLineSeries对象添加到折线图中
chart->addSeries(series);
// 设置折线图的X轴和Y轴
QValueAxis *axisX = new QValueAxis;
axisX->setLabelFormat("%.2f");
axisX->setTitleText("Date");
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
QValueAxis *axisY = new QValueAxis;
axisY->setLabelFormat("%.2f");
axisY->setTitleText("Sales");
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
// 创建一个主窗口,并在其中显示QChartView
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(800, 600);
window.show();
return a.exec();
}
```
在这个示例程序中,我们使用QSqlDatabase类连接到一个名为Sales的数据库,并且查询其中的数据。我们使用QVector<QPointF>类存储查询结果,并且将其传递给QLineSeries类,用于绘制折线图。我们还创建了QValueAxis对象,用于设置折线图的X轴和Y轴,并且将其附加到QLineSeries对象上。最后,我们使用QChartView类在Qt窗口中显示折线图。
阅读全文