如何去掉 QTableView 中不需要的圆角正方形?

问题描述 投票:0回答:1

我想显示一个包含一些数据(数字)的表格。我对此有一个

QTableView
。它显示了我的数据,但每个单元格都包含一个不需要的圆角正方形(可能是一个不起作用的复选框)。它们看起来很糟糕,占用空间并且会掩盖我的数据。

它们为何出现?我怎样才能删除它们?

代码:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QTableView>
#include <QHeaderView>

class MyModel : public QAbstractTableModel
{
public:
    int rowCount(const QModelIndex& index) const override {return 5;}
    int columnCount(const QModelIndex& index) const override {return 2;}
    QVariant data(const QModelIndex& index, int role) const override
    {
        if (role == Qt::DisplayRole)
            return 3000 + index.row() * 100 + index.column();
        else
            return 0;
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    QTableView widget;
    MyModel model;
    widget.setModel(&model);
    widget.horizontalHeader()->hide();
    widget.verticalHeader()->hide();
    w.setCentralWidget(&widget);
    w.show();
    return a.exec();
}

截图:

我在 Windows 11 中使用 Qt 6.8.0。

c++ qt qtableview
1个回答
0
投票

QAbstractItemModel::data()
文档指出:

注意:如果您没有要返回的值,请返回无效的(默认构造的)

QVariant

有很多角色定义,但您只需查找

Qt::DisplayRole
并返回
0
即可完成其余所有操作。有可能,您正在接收
Qt::CheckStateRole
角色并为其返回“假”值,这就是出现复选框的原因。

按照文档的说明进行操作 - 返回一个空的

QVariant

QVariant data(const QModelIndex& index, int role) const override
{
    if (role == Qt::DisplayRole)
        return 3000 + index.row() * 100 + index.column();
    else
        // return 0;
        return QVariant();
}
© www.soinside.com 2019 - 2024. All rights reserved.