要在QML的TableView中显示自定义QSqlTableModel中的数据,需要做以下几个步骤:

  1. 定义一个自定义的QSqlTableModel类,继承自QSqlTableModel,并重写data()函数,以返回QVariant类型的数据。
class CustomSqlTableModel : public QSqlTableModel
{
    Q_OBJECT
public:
    explicit CustomSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase())
        : QSqlTableModel(parent, db) {}

    QVariant data(const QModelIndex &index, int role) const override
    {
        if (role == Qt::DisplayRole) {
            // 获取数据
            QVariant value = QSqlTableModel::data(index, Qt::DisplayRole);
            // 在这里可以根据需要进行数据处理,比如格式化日期等
            return value;
        }
        return QSqlTableModel::data(index, role);
    }
};
  1. 在QML中导入自定义的QSqlTableModel类,并创建一个实例。
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import QtSql 2.3

Window {
    visible: true
    width: 640
    height: 480
    title: "QML TableView"

    QSqlDatabase {
        id: database
        // 配置数据库连接
    }

    Component.onCompleted: {
        database.open();
    }

    TableView {
        id: tableView
        anchors.fill: parent

        model: CustomSqlTableModel {
            id: customModel
            table: "your_table_name"
            // 设置数据库连接
            database: database
            // 设置表名
            // 设置排序规则等其他需要的属性
            // ...
        }

        // 定义表头
        headerDelegate: Item {
            width: tableView.columnWidthProvider(model.headerData(visualIndex, Qt.Horizontal, Qt.DisplayRole))
            height: 30
            Text {
                text: model.headerData(visualIndex, Qt.Horizontal, Qt.DisplayRole)
                anchors.centerIn: parent
            }
        }

        // 定义表格内容
        delegate: Item {
            width: tableView.columnWidthProvider(model.data(index, Qt.DisplayRole))
            height: 30
            Text {
                text: model.data(index, Qt.DisplayRole)
                anchors.centerIn: parent
            }
        }
    }
}

这样就可以在QML的TableView中显示自定义的QSqlTableModel中的数据了。需要注意的是,需要在main函数中注册QML类型。

qmlRegisterType<CustomSqlTableModel>("CustomSqlTableModel", 1, 0, "CustomSqlTableModel");
``
qt 自定义QSqlTableModel中的数据在qml tableview中显示

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

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