这是一个使用 Qt 框架的 C++ 程序,用于创建一个窗口并显示一个表格视图,该视图使用一个数据库模型来加载和显示数据。

在头文件中,定义了一个 MainWindow 类,继承自 QMainWindow。它包含一个表格视图和一个数据库模型的指针。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTableView>
#include <QSqlTableModel>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    QTableView *tableView;
    QSqlTableModel *model;
};

#endif // MAINWINDOW_H

在源文件中,MainWindow 类的构造函数中,首先创建一个 QSqlDatabase 对象,并设置数据库类型为 SQLite,并指定数据库文件名为'smart_home.db'。 然后,打开数据库并检查是否成功打开。如果打开失败,则打印错误信息并返回。

接下来,创建一个 QTableView 对象,并将其设置为 MainWindow 的中央窗口。

然后,创建一个 QSqlTableModel 对象,并将其设置为刚刚创建的数据库对象的模型。然后,设置模型的表名为'home_status'。

最后,使用模型的 select() 函数加载数据。如果加载数据失败,则打印错误信息并返回。

#include "mainwindow.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("smart_home.db");

    // 打开数据库
    if (!db.open()) {
        qDebug() << "Failed to open database:" << db.lastError().text();
        return;
    }

    // 创建表格视图
    tableView = new QTableView(this);
    setCentralWidget(tableView);

    // 创建模型
    model = new QSqlTableModel(this, db);
    model->setTable("home_status"); // 设置表名

    // 加载数据
    if (!model->select()) {
        qDebug() << "Failed to load data:" << model->lastError().text();
        return;
    }

    // 设置表格视图的模型
    tableView->setModel(model);
}

MainWindow::~MainWindow()
{
    delete model;
}

在析构函数中,释放模型的内存。

在 main 函数中,创建一个 QApplication 对象,并创建一个 MainWindow 对象。然后,调用 show() 函数显示窗口,并调用 exec() 函数进入 Qt 的事件循环。

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

这个程序的功能是显示一个表格视图,并从数据库加载数据显示在表格中。你可以根据需要修改数据库连接和表格模型的设置来适应你的应用程序。

Qt C++ 创建窗口并显示表格视图 - 使用数据库模型加载数据

原文地址: https://www.cveoy.top/t/topic/fyui 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录