#include "receptionist.h" #include "ui_receptionist.h" #include "cellstatus.h" #include "checkbtn.h" receptionist::receptionist(QWidget *parent) : QMainWindow(parent), ui(new Ui::receptionist) { ui->setupUi(this); QIcon logo(":/image/icon/logo.png"); this->setWindowIcon(logo); this->setWindowTitle("宜客酒店"); this->setFixedSize(1920,1080); bg = new QLabel(this); bg->setScaledContents(true); bg->setPixmap(QPixmap(":/image/bg/login.png")); bg->lower(); // 设置主窗口大小为1920x1080 this->setFixedSize(1920,1080); db = QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName("hotel"); db.setHostName("localhost"); db.setPort(3306); db.setUserName("root"); db.setPassword("111111"); if(db.open()){ qDebug("database connect succeed"); }else{ qDebug("database connect failed"); } // 创建 QTableWidget 和其他组件 ui->tableWidget->setRowCount(3); ui->tableWidget->setColumnCount(8); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->setHorizontalHeaderLabels({"房间号","房间类型","是否带窗","负责人","状态","退房时间","客户信息","操作"}); ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(0, 0, 0,30);}");//表头透明度 ui->tableWidget->setStyleSheet("QTableWidget{border:2px groove gray;border-radius:15px;background-color: rgb(0, 0, 0,30);color: rgb(255, 255, 255);}"); showall(); } receptionist::~receptionist() { delete ui; } void receptionist::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); bg->resize(ui->widget->size()); } void receptionist::showall(){ QSqlQuery query; query.exec("select * from room"); ui->tableWidget->setRowCount(query.size()); int i = 0; if(query.exec()){ while(query.next()){ //数据 for(int j = 0;j<6;j++){ QTableWidgetItem *twi = new QTableWidgetItem(query.value(j).toString()); twi->setTextAlignment(Qt::AlignCenter); ui->tableWidget->setItem(i,j,twi); ui->tableWidget->setColumnWidth(j,259); } cellstatus* cell = new cellstatus(); connect(cell,&cellstatus::flash,this,&receptionist::onflash); cell->setDB(db); cell->setroomNum(query.value(0).toInt()); checkbtn* cbtn = new checkbtn; cbtn->setroomNum(query.value(0).toInt()); cbtn->setDB(db); cell->setcbtn(cbtn); if(QString::compare(ui->tableWidget->model()->index(i,4).data().toString(),"使用")==0){ cell->setisused(true); cbtn->setisused(true); }else{ cell->setisused(false); cbtn->setisused(false); } cell->setbtn(); cbtn->setbtn(); ui->tableWidget->setCellWidget(i,7,cell); ui->tableWidget->setCellWidget(i,6,cbtn); i++; } } } void receptionist::search(QString str){ int s = str.toInt(); ui->tableWidget->setRowCount(1); ui->tableWidget->clear(); ui->tableWidget->setHorizontalHeaderLabels({"房间号","房间类型","是否带窗","负责人","状态","退房时间","客户信息","操作"}); QSqlQuery query; query.prepare("select * from room where room_num like :str;"); query.bindValue(":str",s); if(query.exec()){ while (query.next()){ for(int j = 0;j<6;j++){ QTableWidgetItem *twi = new QTableWidgetItem(query.value(j).toString()); twi->setTextAlignment(Qt::AlignCenter); ui->tableWidget->setItem(0,j,twi); ui->tableWidget->setColumnWidth(j,259); } cellstatus* cell = new cellstatus(); connect(cell,&cellstatus::flash,this,&receptionist::onflash); cell->setDB(db); cell->setroomNum(query.value(0).toInt()); checkbtn* cbtn = new checkbtn; cbtn->setroomNum(query.value(0).toInt()); cbtn->setDB(db); cell->setcbtn(cbtn); if(QString::compare(ui->tableWidget->model()->index(0,4).data().toString(),"使用")==0){ cell->setisused(true); cbtn->setisused(true); }else{ cell->setisused(false); cbtn->setisused(false); } cell->setbtn(); cbtn->setbtn(); ui->tableWidget->setCellWidget(0,7,cell); ui->tableWidget->setCellWidget(0,6,cbtn); } } } void receptionist::on_pushButton_clicked() { QString str = ui->lineEdit->text(); if(str == NULL){ showall(); }else{ search(str); } } void receptionist::onflash(){ showall(); }