From 3d67793a9ec01f15e3dcf6b59e6e0df5f59bdfad Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Thu, 20 Jul 2017 16:39:01 +0200 Subject: Revamp SQL examples to C++11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed signals and slots to new syntax, used nullptr and replaced foreach with new C++11 range based for loops. Also fixed a few minor flaws. Task-number: QTBUG-60633 Change-Id: Ice4030133971912f96752d9d84c638c70fd73e35 Reviewed-by: Jesus Fernandez Reviewed-by: André Hartmann Reviewed-by: Friedemann Kleint --- examples/sql/masterdetail/database.h | 12 ++++----- examples/sql/masterdetail/dialog.cpp | 12 ++++----- examples/sql/masterdetail/dialog.h | 8 +++--- examples/sql/masterdetail/main.cpp | 13 ++++++---- examples/sql/masterdetail/mainwindow.cpp | 43 ++++++++++++++++++-------------- examples/sql/masterdetail/mainwindow.h | 2 +- 6 files changed, 49 insertions(+), 41 deletions(-) (limited to 'examples/sql/masterdetail') diff --git a/examples/sql/masterdetail/database.h b/examples/sql/masterdetail/database.h index 3139deb0b2..9cbca6f749 100644 --- a/examples/sql/masterdetail/database.h +++ b/examples/sql/masterdetail/database.h @@ -61,12 +61,12 @@ static bool createConnection() QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(":memory:"); if (!db.open()) { - QMessageBox::critical(0, qApp->tr("Cannot open database"), - qApp->tr("Unable to establish a database connection.\n" - "This example needs SQLite support. Please read " - "the Qt SQL driver documentation for information how " - "to build it.\n\n" - "Click Cancel to exit."), QMessageBox::Cancel); + QMessageBox::critical(nullptr, QObject::tr("Cannot open database"), + QObject::tr("Unable to establish a database connection.\n" + "This example needs SQLite support. Please read " + "the Qt SQL driver documentation for information how " + "to build it.\n\n" + "Click Cancel to exit."), QMessageBox::Cancel); return false; } diff --git a/examples/sql/masterdetail/dialog.cpp b/examples/sql/masterdetail/dialog.cpp index 5bb213230e..bb1812eace 100644 --- a/examples/sql/masterdetail/dialog.cpp +++ b/examples/sql/masterdetail/dialog.cpp @@ -155,12 +155,12 @@ int Dialog::addNewAlbum(const QString &title, int artistId) return id; } -void Dialog::addTracks(int albumId, QStringList tracks) +void Dialog::addTracks(int albumId, const QStringList &tracks) { QDomElement albumNode = albumDetails.createElement("album"); albumNode.setAttribute("id", albumId); - for (int i = 0; i < tracks.count(); i++) { + for (int i = 0; i < tracks.count(); ++i) { QString trackNumber = QString::number(i); if (i < 10) trackNumber.prepend('0'); @@ -254,9 +254,9 @@ QDialogButtonBox *Dialog::createButtons() closeButton->setDefault(true); - connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); - connect(revertButton, SIGNAL(clicked()), this, SLOT(revert())); - connect(submitButton, SIGNAL(clicked()), this, SLOT(submit())); + connect(closeButton, &QPushButton::clicked, this, &Dialog::close); + connect(revertButton, &QPushButton::clicked, this, &Dialog::revert); + connect(submitButton, &QPushButton::clicked, this, &Dialog::submit); QDialogButtonBox *buttonBox = new QDialogButtonBox; buttonBox->addButton(submitButton, QDialogButtonBox::ResetRole); @@ -270,7 +270,7 @@ QModelIndex Dialog::indexOfArtist(const QString &artist) { QSqlTableModel *artistModel = model->relationModel(2); - for (int i = 0; i < artistModel->rowCount(); i++) { + for (int i = 0; i < artistModel->rowCount(); ++i) { QSqlRecord record = artistModel->record(i); if (record.value("artist") == artist) return artistModel->index(i, 1); diff --git a/examples/sql/masterdetail/dialog.h b/examples/sql/masterdetail/dialog.h index 1789207d8d..31c4d8552c 100644 --- a/examples/sql/masterdetail/dialog.h +++ b/examples/sql/masterdetail/dialog.h @@ -61,7 +61,7 @@ class Dialog : public QDialog public: Dialog(QSqlRelationalTableModel *albums, QDomDocument details, - QFile *output, QWidget *parent = 0); + QFile *output, QWidget *parent = nullptr); private slots: void revert(); @@ -70,12 +70,12 @@ private slots: private: int addNewAlbum(const QString &title, int artistId); int addNewArtist(const QString &name); - void addTracks(int albumId, QStringList tracks); + void addTracks(int albumId, const QStringList &tracks); QDialogButtonBox *createButtons(); QGroupBox *createInputWidgets(); int findArtistId(const QString &artist); - int generateAlbumId(); - int generateArtistId(); + static int generateAlbumId(); + static int generateArtistId(); void increaseAlbumCount(QModelIndex artistIndex); QModelIndex indexOfArtist(const QString &artist); diff --git a/examples/sql/masterdetail/main.cpp b/examples/sql/masterdetail/main.cpp index cc1a1c4a21..9a4172e55f 100644 --- a/examples/sql/masterdetail/main.cpp +++ b/examples/sql/masterdetail/main.cpp @@ -48,11 +48,14 @@ ** ****************************************************************************/ -#include - #include "database.h" #include "mainwindow.h" +#include +#include + +#include + int main(int argc, char *argv[]) { Q_INIT_RESOURCE(masterdetail); @@ -60,10 +63,10 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); if (!createConnection()) - return 1; + return EXIT_FAILURE; - QFile *albumDetails = new QFile("albumdetails.xml"); - MainWindow window("artists", "albums", albumDetails); + QFile albumDetails("albumdetails.xml"); + MainWindow window("artists", "albums", &albumDetails); window.show(); return app.exec(); } diff --git a/examples/sql/masterdetail/mainwindow.cpp b/examples/sql/masterdetail/mainwindow.cpp index 9fbc4c43a4..7f3479619a 100644 --- a/examples/sql/masterdetail/mainwindow.cpp +++ b/examples/sql/masterdetail/mainwindow.cpp @@ -78,10 +78,10 @@ MainWindow::MainWindow(const QString &artistTable, const QString &albumTable, uniqueAlbumId = model->rowCount(); uniqueArtistId = artistView->count(); - connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(updateHeader(QModelIndex,int,int))); - connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(updateHeader(QModelIndex,int,int))); + connect(model, &QSqlRelationalTableModel::rowsInserted, + this, &MainWindow::updateHeader); + connect(model, &QSqlRelationalTableModel::rowsRemoved, + this, &MainWindow::updateHeader); QGridLayout *layout = new QGridLayout; layout->addWidget(artists, 0, 0); @@ -145,7 +145,7 @@ void MainWindow::showAlbumDetails(QModelIndex index) titleLabel->show(); QDomNodeList albums = albumData.elementsByTagName("album"); - for (int i = 0; i < albums.count(); i++) { + for (int i = 0; i < albums.count(); ++i) { QDomNode album = albums.item(i); if (album.toElement().attribute("id") == albumId) { getTrackList(album.toElement()); @@ -164,9 +164,9 @@ void MainWindow::getTrackList(QDomNode album) QDomNode track; QString trackNumber; - for (int j = 0; j < tracks.count(); j++) { + for (int i = 0; i < tracks.count(); ++i) { - track = tracks.item(j); + track = tracks.item(i); trackNumber = track.toElement().attribute("number"); QListWidgetItem *item = new QListWidgetItem(trackList); @@ -222,7 +222,7 @@ void MainWindow::removeAlbumFromFile(int id) QDomNodeList albums = albumData.elementsByTagName("album"); - for (int i = 0; i < albums.count(); i++) { + for (int i = 0; i < albums.count(); ++i) { QDomNode node = albums.item(i); if (node.toElement().attribute("id").toInt() == id) { albumData.elementsByTagName("archive").item(0).removeChild(node); @@ -283,8 +283,8 @@ QGroupBox* MainWindow::createArtistGroupBox() artistView->setModel(model->relationModel(2)); artistView->setModelColumn(1); - connect(artistView, SIGNAL(currentIndexChanged(int)), - this, SLOT(changeArtist(int))); + connect(artistView, QOverload::of(&QComboBox::currentIndexChanged), + this, &MainWindow::changeArtist); QGroupBox *box = new QGroupBox(tr("Artist")); @@ -314,10 +314,10 @@ QGroupBox* MainWindow::createAlbumGroupBox() locale.setNumberOptions(QLocale::OmitGroupSeparator); albumView->setLocale(locale); - connect(albumView, SIGNAL(clicked(QModelIndex)), - this, SLOT(showAlbumDetails(QModelIndex))); - connect(albumView, SIGNAL(activated(QModelIndex)), - this, SLOT(showAlbumDetails(QModelIndex))); + connect(albumView, &QTableView::clicked, + this, &MainWindow::showAlbumDetails); + connect(albumView, &QTableView::activated, + this, &MainWindow::showAlbumDetails); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(albumView, 0, 0); @@ -383,11 +383,16 @@ void MainWindow::createMenuBar() helpMenu->addAction(aboutAction); helpMenu->addAction(aboutQtAction); - connect(addAction, SIGNAL(triggered(bool)), this, SLOT(addAlbum())); - connect(deleteAction, SIGNAL(triggered(bool)), this, SLOT(deleteAlbum())); - connect(quitAction, SIGNAL(triggered(bool)), this, SLOT(close())); - connect(aboutAction, SIGNAL(triggered(bool)), this, SLOT(about())); - connect(aboutQtAction, SIGNAL(triggered(bool)), qApp, SLOT(aboutQt())); + connect(addAction, &QAction::triggered, + this, &MainWindow::addAlbum); + connect(deleteAction, &QAction::triggered, + this, &MainWindow::deleteAlbum); + connect(quitAction, &QAction::triggered, + this, &MainWindow::close); + connect(aboutAction, &QAction::triggered, + this, &MainWindow::about); + connect(aboutQtAction, &QAction::triggered, + qApp, &QApplication::aboutQt); } void MainWindow::showImageLabel() diff --git a/examples/sql/masterdetail/mainwindow.h b/examples/sql/masterdetail/mainwindow.h index be3c6c94f4..dc6d8d1613 100644 --- a/examples/sql/masterdetail/mainwindow.h +++ b/examples/sql/masterdetail/mainwindow.h @@ -71,7 +71,7 @@ class MainWindow : public QMainWindow public: MainWindow(const QString &artistTable, const QString &albumTable, - QFile *albumDetails, QWidget *parent = 0); + QFile *albumDetails, QWidget *parent = nullptr); private slots: void about(); -- cgit v1.2.3