商品管理系统(QT+数据库)

设计好大致界面
商品管理系统(QT+数据库)_第1张图片

商品管理系统(QT+数据库)_第2张图片

商品管理系统(QT+数据库)_第3张图片

界面设计部分代码:

 //-----------------------出货界面---------------------------
   pushout = new QGroupBox(tr("出货"));
   QFormLayout *push_layout = new QFormLayout(pushout);
  // QComboBox chioce;
 //  choice->addItem(tr("名称"));
  // choice->addItem(tr("数量"));
  countout=new QSpinBox();//选择数量
  nameout=new QLineEdit();//输入商品名称
  checkout = new QPushButton(tr("出货"));//确认按钮

  countout->setMaximum(10000);//设置数量输入最多不超过1000
  countout->setMaximumWidth(100);//设置最数量输入框大小
  checkout->setMaximumWidth(100);

  push_layout->addRow(new QLabel(tr("名称")),nameout);
  push_layout->addRow(new QLabel(tr("数量")),countout);
  push_layout->addRow(checkout);

  push_layout->setMargin(100);
  ui->formLayout->addWidget(pushout);
  pushout->hide();

  connect(checkout,SIGNAL(clicked()),this,SLOT(on_checkout_clicked()));//出货确认按钮传送信息

在UI中加入一个formlayout,然后设置每个功能的界面,按键按下,展现相关界面,隐藏其它界面

void MainWindow::on_pushButton_3_clicked()//进入出货界面
{

   view->hide();
   comein->hide();
   warn->hide();

   pushout->show();
}

数据库部分:

1.连接数据库

 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open())
    {
        QMessageBox::information(0,"错误","数据");
    }
    else
    {
      。。。。。。。。

    }

2.为新的数据库创建条目

        QSqlQuery query;

        QString create_sql = "create table goods (names varchar primary key, goodin int, goodout int, surplus int, tip int)";//不分大小写,goods为表的名称,括号里为条目
        query.prepare(create_sql);
        if(!query.exec())
        {
        qDebug()<<"table not created!";
        }
        else
        {
        qDebug()<<"table created!";
        }

3.增加数据

 int row = model->rowCount();
 QSqlRecord record = model->record();

         record.setValue("names",name_text);
         record.setValue("goodin",count_text);
         record.setValue("goodout",0);
         record.setValue("surplus",count_text);
         record.setValue("tip",leastin_text);

         model->insertRecord(row,record);
         model->submitAll();

其实可以用此方法修改数据,只需改为

 model->setRecord(row,record);

4.修改数据

        model.setData(model.index(0,0),"毛笔");//这里可以利用index修改表中任意数据,                  //index(ROW,COL)
        model.setData(model.index(0,1),10);
        model.setData(model.index(0,2),5);
        model.setData(model.index(0,3),5);
        model.setData(model.index(0,4),2);
        model.submitAll();

5删除数据

    int curRow = view->currentIndex().row();
    model->removeRow(curRow);
    int ok = QMessageBox::warning(0,"确定?","删除?",QMessageBox::Yes,QMessageBox::No);
    if(ok==QMessageBox::Yes)
    {
        model->submitAll();
    }
    else
    {
        model->revertAll();
    }

6.查询数据

model->record(row).value(".....")

7.显示

        model = new QSqlTableModel();
        model->setTable("goods");
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
        model->select();//数据库是否选择表成功,之前编程错误,应该改为if是否选择成功,是才能下一步操作
        //model->removeColumn(0); // don't show the ID
        model->setHeaderData(0, Qt::Horizontal, tr("商品名称"));
        model->setHeaderData(1, Qt::Horizontal, tr("入货"));
        model->setHeaderData(2, Qt::Horizontal, tr("出货"));
        model->setHeaderData(3, Qt::Horizontal, tr("剩余"));
        model->setHeaderData(4, Qt::Horizontal, tr("提醒"));

        view = new QTableView;
        view->setModel(model);

        view->show();
        ui->formLayout->addWidget(view);

注:数据库更新后,显示自动更新

详情见工程
http://download.csdn.net/detail/qq_25716575/9585196

欢迎大家共同交流

你可能感兴趣的:(QT)