QSqlQueryModel 本身不提供直接的内容居中显示功能。要实现这一功能,你需要子类化 QSqlQueryModel 并重新实现数据显示的部分。
代码如下:
#include <QSqlQueryModel>
#include <QVariant>class CenteredSqlQueryModel : public QSqlQueryModel {
public:CenteredSqlQueryModel(QObject *parent = nullptr) : QSqlQueryModel(parent) {}protected:QVariant data(const QModelIndex &index, int role) const override {if (role == Qt::TextAlignmentRole) {return Qt::AlignCenter;}return QSqlQueryModel::data(index, role);}
};
使用这个子类化的模型时,你只需要将它设置为你的 QTableView 的模型,并确保你的 QTableView 使用的是 Qt::TextAlignmentRole 来设置单元格的对齐方式。
CenteredSqlQueryModel *model = new CenteredSqlQueryModel(this);
QTableView *tableView = new QTableView(this);// 配置你的 model 来从数据库读取数据
// ...tableView->setModel(model);