环球观天下!QT实现表单

2022-12-27 10:28:00 来源:51CTO博客


【资料图】

/******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Contact: https://www.qt.io/licensing/***#include "bookwindow.h"#include "bookdelegate.h"#include "initdb.h"#include BookWindow::BookWindow(){    ui.setupUi(this);    if (!QSqlDatabase::drivers().contains("QSQLITE"))        QMessageBox::critical(                    this,                    "Unable to load database",                    "This demo needs the SQLITE driver"                    );    // Initialize the database:    QSqlError err = initDb();    if (err.type() != QSqlError::NoError) {        showError(err);        return;    }    // Create the data model:    model = new QSqlRelationalTableModel(ui.bookTable);    model->setEditStrategy(QSqlTableModel::OnManualSubmit);    model->setTable("books");    // Remember the indexes of the columns:    authorIdx = model->fieldIndex("author");    genreIdx = model->fieldIndex("genre");    // Set the relations to the other database tables:    model->setRelation(authorIdx, QSqlRelation("authors", "id", "name"));    model->setRelation(genreIdx, QSqlRelation("genres", "id", "name"));    // Set the localized header captions:    model->setHeaderData(authorIdx, Qt::Horizontal, tr("Author Name"));    model->setHeaderData(genreIdx, Qt::Horizontal, tr("Genre"));    model->setHeaderData(model->fieldIndex("title"),                         Qt::Horizontal, tr("Title"));    model->setHeaderData(model->fieldIndex("year"), Qt::Horizontal, tr("Year"));    model->setHeaderData(model->fieldIndex("rating"),                         Qt::Horizontal, tr("Rating"));    // Populate the model:    if (!model->select()) {        showError(model->lastError());        return;    }    // Set the model and hide the ID column:    ui.bookTable->setModel(model);    ui.bookTable->setItemDelegate(new BookDelegate(ui.bookTable));    ui.bookTable->setColumnHidden(model->fieldIndex("id"), true);    ui.bookTable->setSelectionMode(QAbstractItemView::SingleSelection);    // Initialize the Author combo box:    ui.authorEdit->setModel(model->relationModel(authorIdx));    ui.authorEdit->setModelColumn(                model->relationModel(authorIdx)->fieldIndex("name"));    ui.genreEdit->setModel(model->relationModel(genreIdx));    ui.genreEdit->setModelColumn(                model->relationModel(genreIdx)->fieldIndex("name"));    // Lock and prohibit resizing of the width of the rating column:    ui.bookTable->horizontalHeader()->setSectionResizeMode(                model->fieldIndex("rating"),                QHeaderView::ResizeToContents);    QDataWidgetMapper *mapper = new QDataWidgetMapper(this);    mapper->setModel(model);    mapper->setItemDelegate(new BookDelegate(this));    mapper->addMapping(ui.titleEdit, model->fieldIndex("title"));    mapper->addMapping(ui.yearEdit, model->fieldIndex("year"));    mapper->addMapping(ui.authorEdit, authorIdx);    mapper->addMapping(ui.genreEdit, genreIdx);    mapper->addMapping(ui.ratingEdit, model->fieldIndex("rating"));    connect(ui.bookTable->selectionModel(),            &QItemSelectionModel::currentRowChanged,            mapper,            &QDataWidgetMapper::setCurrentModelIndex            );    ui.bookTable->setCurrentIndex(model->index(0, 0));    createMenuBar();}void BookWindow::showError(const QSqlError &err){    QMessageBox::critical(this, "Unable to initialize Database",                "Error initializing database: " + err.text());}void BookWindow::createMenuBar(){    QAction *quitAction = new QAction(tr("&Quit"), this);    QAction *aboutAction = new QAction(tr("&About"), this);    QAction *aboutQtAction = new QAction(tr("&About Qt"), this);    QMenu *fileMenu = menuBar()->addMenu(tr("&File"));    fileMenu->addAction(quitAction);    QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));    helpMenu->addAction(aboutAction);    helpMenu->addAction(aboutQtAction);    connect(quitAction, &QAction::triggered, this, &BookWindow::close);    connect(aboutAction, &QAction::triggered, this, &BookWindow::about);    connect(aboutQtAction, &QAction::triggered, qApp, &QApplication::aboutQt);}void BookWindow::about(){    QMessageBox::about(this, tr("About Books"),            tr("

The Books example shows how to use Qt SQL classes " "with a model/view framework."));}

标签: framework OnManualSubmit

上一篇:当前热点-C#/VB.NET 如何在Word表格中拆分或合并单元格?​​
下一篇:vsftpd搭建完ftp后使用windows7的批处理命令进行文件上传