Qt连接Sqlite3并使用Qtableview实时显示数据,重写QSqlQueryModel实现文本居中
#include <QApplication>
#include <QTableView>
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>
class CenteredTextQueryModel : public QSqlQueryModel {
public:
CenteredTextQueryModel(QObject *parent = nullptr) : QSqlQueryModel(parent) {}
protected:
QVariant data(const QModelIndex &index, int role) const override {
if (role == Qt::TextAlignmentRole) {
return QVariant(Qt::AlignCenter);
}
return QSqlQueryModel::data(index, role);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("path_to_your_sqlite_db_file.sqlite3");
if (!db.open()) {
qDebug() << "数据库打开失败:" << db.lastError().text();
return -1;
}
// 创建QTableView并设置模型
QTableView tableView;
CenteredTextQueryModel *model = new CenteredTextQueryModel(&tableView);
model->setQuery("SELECT * FROM your_table_name", db);
tableView.setModel(model);
tableView.show();
return app.exec();
}
这段代码演示了如何在Qt中连接SQLite数据库,并使用QSqlQueryModel
和QTableView
来实时显示数据。同时,我们创建了一个继承自QSqlQueryModel
的CenteredTextQueryModel
类,并重写了data
函数,使得所有文本数据默认居中显示。这是一个实用且常见的Qt数据库和GUI编程技巧。
评论已关闭