您的位置:首页 > 编程语言 > Qt开发

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

2016-07-25 10:42 405 查看
设计好大致界面







界面设计部分代码:

//-----------------------出货界面---------------------------
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

欢迎大家共同交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: