BarTenderPrinter
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
在BarTender软件中负责价格牌标签的布局,并在BarTender中连接到SQL Server 数据库中,实现通过QT开发一个系统对数据库信息实现增删改查。
(1)、数据库设计
数据库名:pricedb,表名:priceinfo
设计表
caizhi
varchar(50)
√
chandi
varchar(50)
√
danjia
varchar(50)
√
guige
varchar(50)
√
pinming
varchar(50)
√
xinghao
varchar(50)
√
xiushi
varchar(50)
√
yanse
varchar(50)
√
(2)、新建BarTenderPrinter项目,类型选择widget
(3)、UI布局如下:
拖拽一个QLabel控件到父窗口上,并双击QLabel控件编辑内容:XX红木价格牌录入专用系统
拖拽一个QTableView到父窗口上
拖拽8个QLabel到父窗口上,并分别命名为:材质、产地、价格、规格、品名、型号、颜色、修饰,再拖拽8个QLineEdit控件,分别与8个QLabel做水平对应布局
拖拽4个QPushButton控件到父窗口,分别命名为:增加记录,删除当前记录,修改记录,清空所有记录
(4)、QT项目BarTenderPrinter文件内容如下:
#-------------------------------------------------
#
# Project created by QtCreator 2021-08-13T10:27:15
#
#-------------------------------------------------
QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = BarTenderPrinter
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RC_ICONS = 001.ico
(5)、在头文件widget.h中的内容如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QString>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QDebug>
#include<QMessageBox>
#include<QSqlError>
#include<QLabel>
#include<QSqlQueryModel>
#include<QItemSelectionModel>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_add_clicked();
void on_pushButton_4_clicked();
void on_update_clicked();
void on_tableView_clicked(const QModelIndex &index);
void on_del_clicked();
private:
Ui::Widget *ui;
QSqlQuery *query;
QSqlQueryModel *qmodel;
};
#endif // WIDGET_H
(6)、源文件widget.cpp的内容如下:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//打印所支持的驱动
qDebug() << QSqlDatabase::drivers();
//添加SQLServer数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
//连接SQLServer数据库
db.setHostName("192.168.10.10"); //数据库服务器IP
db.setUserName("admin"); //数据库登录账号
db.setPassword("passwd"); //数据库登录密码
db.setDatabaseName("databasename"); //连接的数据库名称,此处为pricedb
db.open();
query = new QSqlQuery();
query->exec("create table priceinfo(caizhi varchar(50),chandi varchar(50),danjia varchar(50),guige varchar(50),pinming varchar(50),xinghao varchar(50),xiushi varchar(50),yanse varchar(50))");
//打开数据库
if(!db.open())
{
QMessageBox::warning(this,"错误提示",db.lastError().text());
return;
}
qmodel = new QSqlQueryModel();
qmodel->setQuery("select caizhi ,chandi , danjia ,guige , pinming , xinghao , xiushi , yanse from priceinfo");
ui->tableView->setModel(qmodel);
//注意设置表头的位置,并且这样的方式比sql语句设置的方式好,SQL语句的方式只能是一次,后面会变化
qmodel->setHeaderData(0,Qt::Horizontal,"材质");
qmodel->setHeaderData(1,Qt::Horizontal,"产地");
qmodel->setHeaderData(2,Qt::Horizontal,"单价");
qmodel->setHeaderData(3,Qt::Horizontal,"规格");
qmodel->setHeaderData(4,Qt::Horizontal,"品名");
qmodel->setHeaderData(5,Qt::Horizontal,"型号");
qmodel->setHeaderData(6,Qt::Horizontal,"修饰");
qmodel->setHeaderData(7,Qt::Horizontal,"颜色");
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //数据列宽度自适应, 横向填满表格
ui->tableView->scrollToBottom();
// if (db.open())
// {
// QMessageBox::about(this,"连接成功提示","数据库连接成功");
// }
// else
// {
// QMessageBox::warning(this,"错误",db.lastError().text());
// return;
// }
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_add_clicked()
{
// 材质 lineEdit
// 产地 lineEdit_2
// 价格 lineEdit_3
// 规格 lineEdit_4
// 品名 lineEdit_5
// 型号 lineEdit_6
// 修饰 lineEdit_7
// 颜色 lineEdit_8
QString caizhi = ui->lineEdit->text();
QString chandi = ui->lineEdit_2->text();
QString danjia = ui->lineEdit_3->text();
QString guige = ui->lineEdit_4->text();
QString pinming = ui->lineEdit_5->text();
QString xinghao = ui->lineEdit_6->text();
QString xiushi = ui->lineEdit_7->text();
QString yanse = ui->lineEdit_8->text();
QString sql = "insert into priceinfo (caizhi,chandi,danjia,guige,pinming,xinghao,xiushi,yanse)values('"+caizhi+"','"+chandi+"','"+danjia+"','"+guige+"','"+pinming+"','"+xinghao+"','"+xiushi+"','"+yanse+"')";
if(query->exec(sql)==true)
{
QMessageBox::about(this,"注册提示","记录添加成功");
qmodel->setQuery("select * from priceinfo");
ui->lineEdit->clear();
ui->lineEdit_2->clear(); //清空文本框内容
ui->lineEdit_3->clear(); //清空文本框内容
ui->lineEdit_4->clear(); //清空文本框内容
ui->lineEdit_5->clear(); //清空文本框内容
ui->lineEdit_6->clear(); //清空文本框内容
ui->lineEdit_7->clear(); //清空文本框内容
ui->lineEdit_8->clear(); //清空文本框内容
ui->lineEdit->setFocus(); //鼠标焦点移动到第一个文本框
ui->tableView->scrollToBottom();
}
else
{
QMessageBox::about(this,"错误提示","记录添加失败");
return;
}
}
void Widget::on_pushButton_4_clicked()
{
QString delsql ="delete from priceinfo";
query->exec(delsql);
qmodel->setQuery("select * from priceinfo");
ui->lineEdit->clear();
ui->lineEdit_2->clear(); //清空文本框内容
ui->lineEdit_3->clear(); //清空文本框内容
ui->lineEdit_4->clear(); //清空文本框内容
ui->lineEdit_5->clear(); //清空文本框内容
ui->lineEdit_6->clear(); //清空文本框内容
ui->lineEdit_7->clear(); //清空文本框内容
ui->lineEdit_8->clear(); //清空文本框内容
ui->lineEdit->setFocus();
QMessageBox::information(this,"提示信息","已清空所有记录");
}
void Widget::on_update_clicked()
{
QString caizhi = ui->lineEdit->text();
QString chandi = ui->lineEdit_2->text();
QString danjia = ui->lineEdit_3->text();
QString guige = ui->lineEdit_4->text();
QString pinming = ui->lineEdit_5->text();
QString xinghao = ui->lineEdit_6->text();
QString xiushi = ui->lineEdit_7->text();
QString yanse = ui->lineEdit_8->text();
QString delsql = "update priceinfo set caizhi= '"+caizhi+"',chandi='"+chandi+"',danjia='"+danjia+"',guige='"+guige+"',pinming = '"+pinming+"',xinghao='"+xinghao+"',xiushi='"+xiushi+"',yanse='"+yanse+"' where pinming = '"+pinming+"'";
query->exec(delsql);
qmodel->setQuery("select * from priceinfo");
ui->lineEdit->clear();
ui->lineEdit_2->clear(); //清空文本框内容
ui->lineEdit_3->clear(); //清空文本框内容
ui->lineEdit_4->clear(); //清空文本框内容
ui->lineEdit_5->clear(); //清空文本框内容
ui->lineEdit_6->clear(); //清空文本框内容
ui->lineEdit_7->clear(); //清空文本框内容
ui->lineEdit_8->clear(); //清空文本框内容
ui->lineEdit->setFocus();
QMessageBox::information(this,"提示信息","已修改成功");
}
void Widget::on_tableView_clicked(const QModelIndex &index)
{
QString caizhi1=index.siblingAtColumn(0).data().toString(); //获取点击行指定列的数据
ui->lineEdit->setText(caizhi1); //将获取点击行指定列的数据赋予相应的文本输入框
QString chandi1=index.siblingAtColumn(1).data().toString();
ui->lineEdit_2->setText(chandi1);
QString danjia1=index.siblingAtColumn(2).data().toString();
ui->lineEdit_3->setText(danjia1);
QString guige1=index.siblingAtColumn(3).data().toString();
ui->lineEdit_4->setText(guige1);
QString pinming1=index.siblingAtColumn(4).data().toString();
ui->lineEdit_5->setText(pinming1);
QString xinghao1=index.siblingAtColumn(5).data().toString();
ui->lineEdit_6->setText(xinghao1);
QString xiushi1=index.siblingAtColumn(6).data().toString();
ui->lineEdit_7->setText(xiushi1);
QString yanse1=index.siblingAtColumn(7).data().toString();
ui->lineEdit_8->setText(yanse1);
}
void Widget::on_del_clicked()
{
QString pinming2 = ui->lineEdit_5->text();
QString delsql = "delete from priceinfo where pinming = '"+pinming2+"'";
query->exec(delsql);
qmodel->setQuery("select * from priceinfo");
}