8.9 实例:基本数据处理.txt

来自「qt的源代码」· 文本 代码 · 共 112 行

TXT
112
字号
 class TableEditor : public QDialog
 {
     Q_OBJECT
 public:
     TableEditor(const QString &tableName, QWidget *parent = 0);
 private slots:
     void submit();
 private:
     QPushButton *submitButton;
     QPushButton *revertButton;
     QPushButton *quitButton;
     QDialogButtonBox *buttonBox;
     QSqlTableModel *model;
 };
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     if (!createConnection())
         return 1;
     TableEditor editor("person");
     editor.show();
     return editor.exec();
 }
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);
         return false;
     }
     QSqlQuery query;
     query.exec("create table person (id int primary key, "
                "firstname varchar(20), lastname varchar(20))");
     query.exec("insert into person values(101, 'Danny', 'Young')");
     query.exec("insert into person values(102, 'Christine', 'Holand')");
     query.exec("insert into person values(103, 'Lars', 'Gordon')");
     query.exec("insert into person values(104, 'Roberto', 'Robitaille')");
     query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");
     query.exec("create table trolltechoffice (id int primary key,"
                                              "imagefile int,"
                                              "location varchar(20),"
                                              "country varchar(20),"
                                              "description varchar(100))");
     query.exec("insert into trolltechoffice "
                "values(0, 0, 'Oslo', 'Norway',"
                "'Oslo is home to more than 500 000 citizens and has a "
                "lot to offer.It has been called \"The city with the big "
                "heart\" and this is a nickname we are happy to live up to.')");
     query.exec("insert into trolltechoffice "
                "values(1, 1, 'Brisbane', 'Australia',"
                "'Brisbane is the capital of Queensland, the Sunshine State, "
                "where it is beautiful one day, perfect the next.  "
                "Brisbane is Australia''s 3rd largest city, being home "
                "to almost 2 million people.')");
     query.exec("insert into trolltechoffice "
                "values(2, 2, 'Redwood City', 'US',"
                "'You find Redwood City in the heart of the Bay Area "
                "just north of Silicon Valley. The largest nearby city is "
                "San Jose which is the third largest city in California "
                "and the 10th largest in the US.')");
     query.exec("insert into trolltechoffice "
                "values(3, 3, 'Berlin', 'Germany',"
                "'Berlin, the capital of Germany is dynamic, cosmopolitan "
                "and creative, allowing for every kind of lifestyle. "
                "East meets West in the metropolis at the heart of a "
                "changing Europe.')");
     query.exec("insert into trolltechoffice "
                "values(4, 4, 'Munich', 'Germany',"
                "'Several technology companies are represented in Munich, "
                "and the city is often called the \"Bavarian Silicon Valley\". "
                "The exciting city is also filled with culture, "
                "art and music. ')");
     query.exec("insert into trolltechoffice "
                "values(5, 5, 'Beijing', 'China',"
                "'Beijing as a capital city has more than 3000 years of "
                "history. Today the city counts 12 million citizens, and "
                "is the political, economic and cultural centre of China.')");
     query.exec("create table images (locationid int, file varchar(20))");
     query.exec("insert into images values(0, 'images/oslo.png')");
     query.exec("insert into images values(1, 'images/brisbane.png')");
     query.exec("insert into images values(2, 'images/redwood.png')");
     query.exec("insert into images values(3, 'images/berlin.png')");
     query.exec("insert into images values(4, 'images/munich.png')");
     query.exec("insert into images values(5, 'images/beijing.png')");
     return true;
 }
 TableEditor::TableEditor(const QString &tableName, QWidget *parent)
     : QDialog(parent)
 {
     model = new QSqlTableModel(this);
     model->setTable(tableName);
     model->setEditStrategy(QSqlTableModel::OnManualSubmit);
     model->select();
     model->setHeaderData(0, Qt::Horizontal, tr("ID"));
     model->setHeaderData(1, Qt::Horizontal, tr("First name"));
     model->setHeaderData(2, Qt::Horizontal, tr("Last name")); 
 QTableView *view = new QTableView;
     view->setModel(model);
submitButton = new QPushButton(tr("Submit"));
     submitButton->setDefault(true);
     revertButton = new QPushButton(tr("&Revert"));
     quitButton = new QPushButton(tr("Quit"));
     buttonBox = new QDialogButtonBox(Qt::Vertical);
     buttonBox->addButton(submitButton, QDialogButtonBox::ActionRole);
     buttonBox->addButton(revertButton, QDialogButtonBox::ActionRole);
     buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); 

⌨️ 快捷键说明

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