07 cdModel->setSort(Cd_Title, Qt::AscendingOrder);
08 cdModel->setHeaderData(Cd_Title, Qt::Horizontal, tr("Title"));
09 cdModel->setHeaderData(Cd_ArtistId, Qt::Horizontal, tr("Artist"));
10 cdModel->setHeaderData(Cd_Year, Qt::Horizontal, tr("Year"));
11 cdModel->select();
Конструктор начинается с настройки модели
12 cdTableView = new QTableView;
13 cdTableView->setModel(cdModel);
14 cdTableView->setItemDelegate(new QSqlRelationalDelegate(this));
15 cdTableView->setSelectionMode(QAbstractItemView::SingleSelection);
16 cdTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
17 cdTableView->setColumnHidden(Cd_Id, true);
18 cdTableView->resizeColumnsToContents();
Настройка представления таблицы
19 trackModel = new QSqlTableModel(this);
20 trackModel->setTable("track");
21 trackModel->setHeaderData(Track_Title, Qt::Horizontal, tr("Title"));
22 trackModel->setHeaderData(Track_Duration, Qt::Horizontal,
23 tr("Duration"));
24 trackTableView = new QTableView;
25 trackTableView->setModel(trackModel);
26 trackTableView->setItemDelegate(
27 new TrackDelegate(Track_Duration, this));
28 trackTableView->setSelectionMode(QAbstractItemView::SingleSelection);
29 trackTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
Для дорожек мы собираемся выводить на экран только названия песен и их длительности, поэтому достаточно использовать модель
Создание представлений и кнопок, их компоновка и соединения сигнал—слот не содержат ничего особенного, поэтому из оставшейся части конструктора мы покажем только несколько не совсем очевидных соединений.
30 …
31 connect(cdTableView->selectionModel(),
32 SIGNAL(currentRowChanged(const QModelIndex &,
33 const QModelIndex &)),
34 this, SLOT(currentCdChanged(const QModelIndex &)));
35 connect(cdModel, SIGNAL(beforeInsert(QSqlRecord &)),
36 this, SLOT(beforeInsertCd(QSqlRecord &)));