代码如下
#include <QtGui>#include <QtSql>#include scooterwindow.hScooterWindow::ScooterWindow(){ model = new QSqlTableModel(this); model->setTable(scooter); model->setSort(Scooter_Name, Qt::AscendingOrder); model->setHeaderData(Scooter_Name, Qt::Horizontal, tr(Name)); model->setHeaderData(Scooter_MaxSpeed, Qt::Horizontal, tr(MPH)); model->setHeaderData(Scooter_MaxRange, Qt::Horizontal, tr(Miles)); model->setHeaderData(Scooter_Weight, Qt::Horizontal, tr(Lbs)); model->setHeaderData(Scooter_Description, Qt::Horizontal, tr(Description)); model->select(); view = new QTableView; view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); view->setColumnHidden(Scooter_Id, true); view->resizeColumnsToContents(); view->setEditTriggers(QAbstractItemView::NoEditTriggers); QHeaderView *header = view->horizontalHeader(); header->setStretchLastSection(true); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(view); setLayout(mainLayout); setWindowTitle(tr(Scooters));}#ifndef SCOOTERWINDOW_H#define SCOOTERWINDOW_H#include <QWidget>class QSqlTableModel;class QTableView;enum { Scooter_Id = 0, Scooter_Name =
1, Scooter_MaxSpeed =
2, Scooter_MaxRange =
3, Scooter_Weight =
4, Scooter_Description = 5};class ScooterWindow : public QWidget{ Q_OBJECTpublic: ScooterWindow();private: QSqlTableModel *model; QTableView *view;};#endif#include <QtGui>#include <QtSql>#include scooterwindow.hbool createConnection(){ QSqlDatabase db = QSqlDatabase::addDatabase(QSQLITE); db.setDatabaseName(scooters.dat); if (!db.open()) { QMessageBox::warning(0, QObject::tr(Database Error), db.lastError().text()); return false; } return true;}void createFakeData(){ QSqlQuery query; query.exec(DROP TABLE scooter); query.exec(CREATE TABLE scooter ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(40) NOT NULL, maxspeed INTEGER NOT NULL, maxrange INTEGER NOT NULL, weight INTEGER NOT NULL, description VARCHAR(80) NOT NULL)); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Mod-Rad 1500', 40, 35, 298, 'Speedometer, odometer, battery meter, turn signal indicator, locking steering column')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Rad2Go Great White E36', 22, 12, 93, '10\ airless tires')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('X-Treme X360', 21, 14, 59, 'Cargo rack, foldable')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Vego SX 600', 20, , 76, 'Two interchangeable batteries, foldable')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Sunbird E Bike', 18, 30, 118, '')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Leopard Shark', 16, 12, 63, 'Battery indicator, removable seat, foldable')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('Vego iQ 450', 15, 0, 60, 'OUT OF STOCK')); query.exec(INSERT INTO scooter (name, maxspeed, maxrange, weight, description) VALUES ('X-Treme X-11', 15, 11