• 简易点菜系统


     1 //main.cpp
     2 #include "mywin.h"
     3 #include "foodtype.h"
     4 #include <QApplication>
     5 #include <QSqlDatabase>
     6 #include <QDebug>
     7 #include <QSqlDriver>
     8 #include <QSqlQuery>
     9 #include <QMessageBox>
    10 int main(int argc, char *argv[])
    11 {
    12     QApplication a(argc, argv);
    13    // QSqlDatabase db;
    14     QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//数据库必须在声明的时候指定,否则会出错
    15     qDebug()<< db.drivers();//查看支持的数据库
    16     //db.addDatabase("QMYSQL");
    17     db.setDatabaseName("mydb");
    18     db.setHostName("192.168.2.90");
    19     db.setUserName("who");
    20     db.setPassword("123456");
    21     if(!db.open())
    22     {
    23         QMessageBox::critical(0,"error","open databases failed");
    24         exit(0);
    25     }
    26     qDebug()<<db.tables();
    27 
    28 
    29     QSqlQuery query;
    30     query.exec("select *from foodtype;");
    31     while(query.next())
    32     {
    33         qDebug()<<query.value(0).toInt();//转化一下,要不会把数据类型一块打印出来
    34         qDebug()<<query.value(1).toString();
    35     }
    36 
    37     qDebug()<<query.exec("show tables;");
    38     MyWin w;
    39     w.show();
    40 
    41     FoodType foodtype;
    42     foodtype.show();
    43     return a.exec();
    44 }
     1 //mywin.cpp
     2 #include "mywin.h"
     3 #include "ui_mywin.h"
     4 #include <QSqlQuery>
     5 #include <QDebug>
     6 #include <QMessageBox>
     7 #include <QString>
     8 
     9 MyWin::MyWin(QWidget *parent) :
    10     QWidget(parent),
    11     ui(new Ui::MyWin)
    12 {
    13     ui->setupUi(this);
    14 
    15     QSqlQuery query;
    16     query.exec("select *from foodtype;");
    17     while(query.next())
    18     {
    19        // ui->comboBox->addItem(query.value(0).toInt(),query.value(1).toString());//将菜系添加到下拉列表中,必须在后面加上为数据项
    20                                                  //,要不后面无法获取fid的下标;
    21         ui->comboBox->addItem(query.value(1).toString(),query.value(0).toInt());
    22     }
    23 }
    24 
    25 MyWin::~MyWin()
    26 {
    27     delete ui;
    28 }
    29 
    30 void MyWin::on_pushButton_2_clicked()
    31 {
    32     this->close();
    33 }
    34 
    35 void MyWin::on_pushButton_clicked()
    36 {
    37    QSqlQuery query;
    38    int fid=ui->comboBox->currentData().toInt();//获取下拉列表里的数据值
    39     //qDebug()<<fid;
    40    if(ui->line_id->text().isEmpty())
    41    {
    42        QMessageBox::critical(this,"error","please input id");
    43        ui->line_id->setFocus();//聚焦光标
    44        return;//exit current function
    45    }
    46 
    47    if(ui->line_name->text().isEmpty())
    48    {
    49        QMessageBox::critical(this,"error","please input name");
    50        ui->line_name->setFocus();//聚焦光标
    51        return;
    52    }
    53    if(ui->line_price->text().isEmpty())
    54    {
    55        QMessageBox::critical(this,"error","please input price");
    56        ui->line_price->setFocus();//聚焦光标
    57        return;
    58    }
    59    //int id=ui->line_id->text().toInt(); //用Qstring 类型声明id,要不下面打印id号时会报错
    60    QString id=ui->line_id->text();
    61    QString str2("select *from food where fid=%1;");
    62    qDebug()<< query.exec(str2.arg(id));
    63    while(query.next())
    64    {
    65        QMessageBox::critical(this,"error","id" + id + "used");
    66        ui->line_id->setFocus();
    67        return;
    68    }
    69 
    70    QMessageBox mesgBox(this);
    71    mesgBox.setText("The document has been modified.");
    72    mesgBox.setInformativeText("Do you want to save you change?");
    73    mesgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel |QMessageBox::Discard);
    74    int ret=mesgBox.exec();
    75 
    76    QString name=ui->line_name->text();
    77    float price=ui->line_price->text().toFloat();
    78    QString mem =ui->textEdit->document()->toPlainText();//多行编辑的显示
    79 
    80    QString str("insert into food values(%1,'%2',%3,%4,'%5');");
    81    switch(ret){
    82         case QMessageBox::Save:
    83                 query.exec(str.arg(id).arg(name).arg(fid).arg(price).arg(mem));
    84                 break;
    85         case QMessageBox::Cancel:
    86                // return;
    87                 break;
    88        case QMessageBox::Discard:
    89                 ui->line_id->setText(" ");
    90                 return;
    91                 break;
    92    }
    93 }
     1   //显示tableview里的数据时,要用到《QsqlQueryModel》,
        #include "ui_foodtype.h" 2 //#include <QSqlTableModel> 3 #include <QSqlQueryModel> 4 5 FoodType::FoodType(QWidget *parent) : 6 QWidget(parent), 7 ui(new Ui::FoodType) 8 { 9 ui->setupUi(this); 10 QSqlQueryModel *model=new QSqlQueryModel(this); 11 // model->setTable("菜单信息"); 12 model->setQuery("select fid,food.name,ftypeid,fprice,id,foodtype.name,mem from food inner join foodtype on id=fid;"); 13 14 ui->tableView->setModel(model); 15 } 16 17 FoodType::~FoodType() 18 { 19 delete ui; 20 }
  • 相关阅读:
    WinForm多线程+委托防止界面假死
    C#中异步及winform中界面假死
    js如何判断当前文本的输入状态——中文输入法的那些坑
    数据库主键设计之思考
    node.js使用superagent实现模拟登陆功能(包含下载验证码功能)
    application.properties在Spring Boot项目中的位置
    ubuntu18.04安装chromium浏览器
    ubuntu 18.04安装mysql 8
    Spring Boot学习笔记——搭建一个最简单的hello world
    ubuntu 18.04安装jdk8和eclipse
  • 原文地址:https://www.cnblogs.com/edan/p/9060311.html
Copyright © 2020-2023  润新知