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);