Polish the model/view tutorial examples

- Reorder the class declarations, moving private sections last
- Make constructors explicit
- Add space to the comments
- Introduce auto
- Replace slot MainWindow::showWindowTitle() by a direct
  connection to slot QWidget::setWindowTitle().

Change-Id: Ic229162434dfef5f2767d0b4e186759ca0f821f3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
(cherry picked from commit 8751ca3daeaa2a500a37b070cdcce5a5bb7a165f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Friedemann Kleint 2022-08-08 11:29:22 +02:00 committed by Qt Cherry-pick Bot
parent 78a5890355
commit 002796928b
11 changed files with 55 additions and 51 deletions

View File

@ -12,7 +12,8 @@ class MyModel : public QAbstractTableModel
{ {
Q_OBJECT Q_OBJECT
public: public:
MyModel(QObject *parent = nullptr); explicit MyModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

View File

@ -10,7 +10,8 @@ class MyModel : public QAbstractTableModel
{ {
Q_OBJECT Q_OBJECT
public: public:
MyModel(QObject *parent = nullptr); explicit MyModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

View File

@ -11,14 +11,17 @@ class MyModel : public QAbstractTableModel
{ {
Q_OBJECT Q_OBJECT
public: public:
MyModel(QObject *parent = nullptr); explicit MyModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
private:
QTimer *timer;
private slots: private slots:
void timerHit(); void timerHit();
private:
QTimer *timer;
}; };
#endif // MYMODEL_H #endif // MYMODEL_H

View File

@ -10,7 +10,8 @@ class MyModel : public QAbstractTableModel
{ {
Q_OBJECT Q_OBJECT
public: public:
MyModel(QObject *parent = nullptr); explicit MyModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

View File

@ -11,15 +11,10 @@ MainWindow::MainWindow(QWidget *parent)
, tableView(new QTableView(this)) , tableView(new QTableView(this))
{ {
setCentralWidget(tableView); setCentralWidget(tableView);
MyModel *myModel = new MyModel(this); auto *myModel = new MyModel(this);
tableView->setModel(myModel); tableView->setModel(myModel);
// transfer changes to the model to the window title // transfer changes to the model to the window title
connect(myModel, &MyModel::editCompleted, connect(myModel, &MyModel::editCompleted,
this, &MainWindow::showWindowTitle); this, &QWidget::setWindowTitle);
}
void MainWindow::showWindowTitle(const QString &title)
{
setWindowTitle(title);
} }

View File

@ -14,12 +14,11 @@ QT_END_NAMESPACE
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
private: private:
QTableView *tableView; QTableView *tableView;
public:
MainWindow(QWidget *parent = nullptr);
public slots:
void showWindowTitle(const QString &title);
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -16,14 +16,16 @@ QT_END_NAMESPACE
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
private: private:
QTreeView *treeView;
QStandardItemModel *standardModel;
QList<QStandardItem *> prepareRow(const QString &first, QList<QStandardItem *> prepareRow(const QString &first,
const QString &second, const QString &second,
const QString &third) const; const QString &third) const;
public:
MainWindow(QWidget *parent = nullptr); QTreeView *treeView;
QStandardItemModel *standardModel;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -14,18 +14,18 @@ MainWindow::MainWindow(QWidget *parent)
, standardModel(new QStandardItemModel(this)) , standardModel(new QStandardItemModel(this))
{ {
setCentralWidget(treeView); setCentralWidget(treeView);
QStandardItem *rootNode = standardModel->invisibleRootItem(); auto *rootNode = standardModel->invisibleRootItem();
// defining a couple of items // defining a couple of items
QStandardItem *americaItem = new QStandardItem("America"); auto *americaItem = new QStandardItem("America");
QStandardItem *mexicoItem = new QStandardItem("Canada"); auto *mexicoItem = new QStandardItem("Canada");
QStandardItem *usaItem = new QStandardItem("USA"); auto *usaItem = new QStandardItem("USA");
QStandardItem *bostonItem = new QStandardItem("Boston"); auto *bostonItem = new QStandardItem("Boston");
QStandardItem *europeItem = new QStandardItem("Europe"); auto *europeItem = new QStandardItem("Europe");
QStandardItem *italyItem = new QStandardItem("Italy"); auto *italyItem = new QStandardItem("Italy");
QStandardItem *romeItem = new QStandardItem("Rome"); auto *romeItem = new QStandardItem("Rome");
QStandardItem *veronaItem = new QStandardItem("Verona"); auto *veronaItem = new QStandardItem("Verona");
// building up the hierarchy // building up the hierarchy
rootNode-> appendRow(americaItem); rootNode-> appendRow(americaItem);
@ -59,7 +59,7 @@ void MainWindow::selectionChangedSlot(const QItemSelection & /*newSelection*/, c
// find out the hierarchy level of the selected item // find out the hierarchy level of the selected item
int hierarchyLevel = 1; int hierarchyLevel = 1;
QModelIndex seekRoot = index; QModelIndex seekRoot = index;
while (seekRoot.parent() != QModelIndex()) { while (seekRoot.parent().isValid()) {
seekRoot = seekRoot.parent(); seekRoot = seekRoot.parent();
hierarchyLevel++; hierarchyLevel++;
} }

View File

@ -16,13 +16,15 @@ QT_END_NAMESPACE
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
private slots:
void selectionChangedSlot(const QItemSelection &newSelection, const QItemSelection &oldSelection);
private: private:
QTreeView *treeView; QTreeView *treeView;
QStandardItemModel *standardModel; QStandardItemModel *standardModel;
private slots:
void selectionChangedSlot(const QItemSelection &newSelection, const QItemSelection &oldSelection);
public:
MainWindow(QWidget *parent = nullptr);
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H