QT學習 向數(shù)據(jù)庫中添加Button
作者:佚名
QT學習 向數(shù)據(jù)庫中添加Button 是本文介紹內(nèi)容,數(shù)據(jù)庫的操作,友們應該不陌生,那我們先來看內(nèi)容。
本文介紹的是QT學習 向數(shù)據(jù)庫中添加Button,如果需要對數(shù)據(jù)庫操作,必須在.pro文件中加入:
- QT +=sql
代碼如下:
- #include <QString>
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QSqlDriver>
- #include <QDateTime>
- #include <QDebug>
- #include <QPushButton>
- #include <QVBoxLayout>
- #include <QToolBox>
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- //下面進行數(shù)據(jù)庫的設置
- int i;
- QVBoxLayout *layInstruct = new QVBoxLayout;//ToolBox的Layout
- QToolBox *tbInstruct=new QToolBox();
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //使用sqlite數(shù)據(jù)庫驅(qū)動
- db.setDatabaseName("G:\\SerialInstruct.db3"); //我們之前建立的數(shù)據(jù)庫
- if (db.open())//嘗試連接數(shù)據(jù)庫
- { //已經(jīng)成功連上數(shù)據(jù)庫
- QSqlQuery query; //新建一個查詢的實例
- if (query.exec("select * from UnitData")) //嘗試列出 student 表的所有記錄
- { //本次查詢成功
- int numRows = 0; //詢問數(shù)據(jù)庫驅(qū)動,是否驅(qū)動含有某種特性
- if (db.driver()->hasFeature(QSqlDriver::QuerySize))
- {
- numRows = query.size(); //如果支持結(jié)果影響的行數(shù),那么直接記錄下來
- }
- else
- {
- query.last(); //否則定位到結(jié)果***,qt 文檔說,這個方法非常慢
- numRows = query.at() + 1;
- query.seek(-1);
- }
- QString name, age;
- i=0;
- while(query.next())
- { //定位結(jié)果到下一條記錄
- name = query.value(0).toString();
- age = query.value(1).toString();
- QString result = name + " " + age;
- QWidget *pages=new QWidget();
- tbInstruct->addItem(pages,age);
- QSqlQuery qryInstruct;//查詢子表內(nèi)容,用于創(chuàng)建Button
- if (qryInstruct.exec(QString("Select ID,Description from InstructList Where UnitID=%1").arg(i+1)))
- {
- tbInstruct->setCurrentIndex(i);
- QVBoxLayout *layout = new QVBoxLayout;//建立一個堅排的規(guī)則
- while(qryInstruct.next())
- {
- QString sID,sCaption;
- sID=qryInstruct.value(0).toString();
- sCaption=qryInstruct.value(1).toString();
- QPushButton *button = new QPushButton(sCaption);
- button->setAccessibleDescription(sID);
- button->setCheckable(true);
- button->setAutoExclusive(true);
- layout->addWidget(button);//把Button放入Layout中
- }
- layout->setSpacing(0);
- pages->setLayout(layout);
- }
- ii=i+1;
- }
- //ui->toolBox->removeItem(0);
- tbInstruct->setCurrentIndex(0);
- layInstruct->addWidget(tbInstruct);
- layInstruct->setSpacing(0);
- ui->centralWidget->setLayout(layInstruct);
- }
- else
- { //如果查詢失敗,用下面的方法得到具體數(shù)據(jù)庫返回的原因
- QSqlError error = query.lastError();
- //display.append("From mysql database: " + error.databaseText());
- }
- }
- else
- { //打開數(shù)據(jù)庫失敗,顯示數(shù)據(jù)庫返回的失敗描述
- //display.append("cannot open database.");
- //display.append("Reason: " + db.lastError().databaseText());
- }
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::changeEvent(QEvent *e)
- {
- QMainWindow::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
- }
小結(jié):關于QT學習 向數(shù)據(jù)庫中添加Button 誰的內(nèi)容介紹完了,希望本文對你有所幫助!更多關于數(shù)據(jù)庫資料請參考請閱讀編輯推薦。
責任編輯:zhaolei
來源:
互聯(lián)網(wǎng)