前言:

准备转向Qt开发,打算把学习过程记录下来,无数次有过记录学习过程的想法但都没有实现,希望自己这次能坚持下去。 

正题: 

如果不知道Qt是什么,或者不知道Windows下怎么安装,去百度一下吧,这里直接入正题。 

本文示例成功运行的前提是电脑上已经运行了SQL Server并且有数据库及数据表。 

1、新建工程: 

打开Qt Creator,File -> New File or Project,左边选择 Qt Widget Project,右边选择Qt Gui Application

单击Choose;填写工程名称(这里是1)及选择目录

-> Next -> Next -> Next -> Finish,工程顺利生成并自动回到了主界面,单击一下左边的绿色小三角,就会编译运行这个空白的程序。  

2、连接数据库: 

要连接数据库,就要手工向工程里面的相关文件添加代码,具体如下:

1.pro:添加一行 QT += sql

main.cpp:添加引用  

 
  1. #include <QtGui/QApplication> 
  2. #include "mainwindow.h" 
  3.  
  4. //以下是手工添加的引用 
  5. #include <QSqlDatabase> 
  6. #include <QSqlError> 
  7. #include <QMessageBox> 
  8.  
  9. //这个是手工添加的函数 
  10. void OpenDatabase() 
  11.     QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); 
  12.     db.setDatabaseName(QString("DRIVER={SQL SERVER};" 
  13.                                "SERVER=%1;" //服务器名称 
  14.                                "DATABASE=%2;"//数据库名 
  15.                                "UID=%3;"           //登录名 
  16.                                "PWD=%4;"        //密码 
  17.                                ).arg("192.168.1.252"
  18.                        .arg("数据库名"
  19.                        .arg("登录名"
  20.                        .arg("密码"
  21.                        ); 
  22.     if (!db.open()) 
  23.     {
  24.         QMessageBox::critical(0, qApp->tr("Cannot open database"), 
  25.                               db.lastError().databaseText(), QMessageBox::Cancel); 
  26.  
  27.     } 
  28.  
  29. int main(int argc, char *argv[]) 
  30.     QApplication a(argc, argv); 
  31.     MainWindow w; 
  32.     w.show(); 
  33.      
  34.     //打开数据库 
  35.     OpenDatabase(); 
  36.      
  37.     return a.exec(); 

双击 mainwindow.ui 拖一个TableView和一个PushButton到界面上,然后在PushButton上右键 -> Go to slot -> OK 

 

mainwindow.cpp文件代码如下 

 
  1. #include "mainwindow.h" 
  2. #include "ui_mainwindow.h" 
  3.  
  4. //手工添加以下引用 
  5. #include <QSqlQueryModel> 
  6.  
  7. MainWindow::MainWindow(QWidget *parent) : 
  8.     QMainWindow(parent), 
  9.     ui(new Ui::MainWindow) 
  10.     ui->setupUi(this); 
  11.  
  12. MainWindow::~MainWindow() 
  13.     delete ui; 
  14.  
  15. void MainWindow::on_pushButton_clicked() 
  16.     QSqlQueryModel *model = new QSqlQueryModel; 
  17.     model->setQuery("select * from product");//这里直接设置SQL语句,忽略最后一个参数 
  18.     ui->tableView->setModel(model); 
  19.  
  20.     //以下是视觉方面的效果,不加也没影响 
  21.  
  22.     //隔行变色 
  23.     ui->tableView->setAlternatingRowColors(true); 
  24.  
  25.     //设置行高 
  26.     int row_count = model->rowCount(); 
  27.     for(int i =0; i < row_count; i++) 
  28.     { 
  29.         ui->tableView->setRowHeight(i, 20); 
  30.     } 

3、保存并运行: 

保存所有代码,单击左边绿色三角形编译运行 

单击顺利运行弹出的窗体上的按钮,顺利查询出数据库记录!