⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 artistform.cpp

📁 qt3.8开发的例子, 做linux下qt编程可以参考
💻 CPP
字号:
#include <qdatatable.h>#include <qlayout.h>#include <qpushbutton.h>#include <qsqldatabase.h>#include <qsqlrecord.h>#include "artistform.h"#include "generateid.h"ArtistForm::ArtistForm(QWidget *parent, const char *name)    : QDialog(parent, name){    setCaption(tr("Update Artists"));    db = QSqlDatabase::database("ARTIST");    db->transaction();    QSqlCursor *artistCursor = new QSqlCursor("artist", true, db);    artistTable = new QDataTable(artistCursor, false, this);    artistTable->addColumn("name", tr("Name"));    artistTable->addColumn("country", tr("Country"));    artistTable->setAutoDelete(true);    artistTable->setConfirmDelete(true);    artistTable->setSorting(true);    artistTable->refresh();    updateButton = new QPushButton(tr("Update"), this);    updateButton->setDefault(true);    cancelButton = new QPushButton(tr("Cancel"), this);    connect(artistTable, SIGNAL(beforeDelete(QSqlRecord *)),            this, SLOT(beforeDeleteArtist(QSqlRecord *)));    connect(artistTable, SIGNAL(primeInsert(QSqlRecord *)),            this, SLOT(primeInsertArtist(QSqlRecord *)));    connect(artistTable, SIGNAL(beforeInsert(QSqlRecord *)),            this, SLOT(beforeInsertArtist(QSqlRecord *)));    connect(updateButton, SIGNAL(clicked()),            this, SLOT(accept()));    connect(cancelButton, SIGNAL(clicked()),            this, SLOT(reject()));    QHBoxLayout *buttonLayout = new QHBoxLayout;    buttonLayout->addStretch(1);    buttonLayout->addWidget(updateButton);    buttonLayout->addWidget(cancelButton);    QVBoxLayout *mainLayout = new QVBoxLayout(this);    mainLayout->setMargin(11);    mainLayout->setSpacing(6);    mainLayout->addWidget(artistTable);    mainLayout->addLayout(buttonLayout);}void ArtistForm::accept(){    db->commit();    QDialog::accept();}void ArtistForm::reject(){    db->rollback();    QDialog::reject();}void ArtistForm::beforeDeleteArtist(QSqlRecord *buffer){    QSqlQuery query(db);    query.exec("DELETE FROM track WHERE track.id IN "               "(SELECT track.id FROM track, cd "               "WHERE track.cdid = cd.id AND cd.artistid = "               + buffer->value("id").toString() + ")");    query.exec("DELETE FROM cd WHERE artistid = "               + buffer->value("id").toString());}void ArtistForm::primeInsertArtist(QSqlRecord *buffer){    buffer->setValue("country", "USA");}void ArtistForm::beforeInsertArtist(QSqlRecord *buffer){    buffer->setValue("id", generateId("artist", db));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -