QT QTableView显示多列
时间: 2023-09-14 19:03:15 浏览: 194
要在QT QTableView中显示多列,你需要继承QAbstractTableModel类,实现rowCount()、columnCount()、data()和headerData()等方法。在这些方法中,你要指定数据的行数、列数、每个单元格的数据和表头的数据。
下面是一个简单的示例代码,它显示了一个3列的表格:
```
class MyTableModel : public QAbstractTableModel {
public:
MyTableModel(QObject *parent = nullptr) : QAbstractTableModel(parent) {}
int rowCount(const QModelIndex &parent = QModelIndex()) const override {
return 5; // 指定行数为5
}
int columnCount(const QModelIndex &parent = QModelIndex()) const override {
return 3; // 指定列数为3
}
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override {
if (role == Qt::DisplayRole) {
// 返回数据
return QString("row%1, col%2").arg(index.row() + 1).arg(index.column() + 1);
}
return QVariant();
}
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override {
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
// 返回表头
return QString("Column %1").arg(section + 1);
}
return QVariant();
}
};
```
在你的窗口中创建QTableView控件,并将其设置为MyTableModel的视图:
```
QTableView *tableView = new QTableView(this);
MyTableModel *model = new MyTableModel(this);
tableView->setModel(model);
```
这样就可以显示多列数据了。你可以根据需要修改MyTableModel类的实现来适应你的数据源。
阅读全文