qml tableview使用自定义model显示多个数据库数据
要在QML的TableView中显示多个数据库数据,您需要编写一个自定义的Model来获取和管理这些数据。
以下是一个示例的自定义Model代码:
class MyTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
MyTableModel(QObject *parent = nullptr)
: QAbstractTableModel(parent)
{
}
// 设置表格的行数和列数
int rowCount(const QModelIndex &parent = QModelIndex()) const override
{
Q_UNUSED(parent);
return m_data.size();
}
int columnCount(const QModelIndex &parent = QModelIndex()) const override
{
Q_UNUSED(parent);
return 3; // 假设有3列数据
}
// 设置表格中每个单元格的数据
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
{
if (!index.isValid())
return QVariant();
if (role == Qt::DisplayRole || role == Qt::EditRole) {
int row = index.row();
int column = index.column();
// 返回对应行列的数据
if (column == 0)
return m_data[row].column1;
else if (column == 1)
return m_data[row].column2;
else if (column == 2)
return m_data[row].column3;
}
return QVariant();
}
// 设置表格中每个单元格的标头
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
{
if (role != Qt::DisplayRole)
return QVariant();
if (orientation == Qt::Horizontal) {
if (section == 0)
return "Column 1";
else if (section == 1)
return "Column 2";
else if (section == 2)
return "Column 3";
}
return QVariant();
}
// 添加数据到Model
void addData(const QString &column1, const QString &column2, const QString &column3)
{
beginInsertRows(QModelIndex(), rowCount(), rowCount());
Data newData;
newData.column1 = column1;
newData.column2 = column2;
newData.column3 = column3;
m_data.append(newData);
endInsertRows();
}
private:
struct Data {
QString column1;
QString column2;
QString column3;
};
QList<Data> m_data;
};
在QML中,您可以使用这个自定义Model来创建一个TableView并显示多个数据库数据:
import QtQuick 2.15
import QtQuick.Controls 2.15
TableView {
id: tableView
width: 400
height: 300
model: myModel
TableViewColumn {
role: "column1"
title: "Column 1"
width: 100
}
TableViewColumn {
role: "column2"
title: "Column 2"
width: 100
}
TableViewColumn {
role: "column3"
title: "Column 3"
width: 100
}
// 创建自定义Model对象
MyTableModel {
id: myModel
}
}
在QML中,您可以通过调用myModel.addData(column1, column2, column3)来添加数据到Model中。
请注意,这只是一个示例,您需要根据您的实际需求来修改和扩展自定义Model的代码
原文地址: https://www.cveoy.top/t/topic/hIla 著作权归作者所有。请勿转载和采集!