16,227
社区成员
发帖
与我相关
我的任务
分享
#include <bookshow.h>
#include <QMessageBox>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QInputDialog>
BookShow::BookShow(QWidget *parent) :
QWidget(parent)
{
if (openDataBase())
{
createDataBaseTable();
QStringList data;
data << "empty";
query->exec("select Book_Name from BookInfo");
while (query->next())
data << query->value(0).toString();
model = new QStringListModel(this);
model->setStringList(data);
view = new QListView;
view->setModel(model);
showButton = new QPushButton("Show", this);
QObject::connect(showButton, &QPushButton::clicked,
this, &BookShow::showDetail);
deleteButton = new QPushButton("Delete", this);
QObject::connect(deleteButton, &QPushButton::clicked,
this, &BookShow::deleteData);
insertButton = new QPushButton("Insert", this);
QObject::connect(insertButton, &QPushButton::clicked,
this, &BookShow::insertData);
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(deleteButton);
buttonLayout->addWidget(showButton);
buttonLayout->addWidget(insertButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(view);
mainLayout->addLayout(buttonLayout);
setLayout(mainLayout);
}
}
bool BookShow::openDataBase()
{
DataBase = QSqlDatabase::addDatabase("QSQLITE");
DataBase.setHostName("localHost");
DataBase.setDatabaseName("MyBook");
DataBase.setUserName("root");
DataBase.setPassword("123456");
if (DataBase.open())
{
query = new QSqlQuery(DataBase);
return true;
}
QMessageBox::information(this, "error", "The DataBase failed to open!");
return false;
}
bool BookShow::createDataBaseTable()
{
QString tableName = "BookInfo";
query->exec(QString("select * from sys.tables where name = '%1' ").arg(tableName));
if (!query->next())
return false;
query->exec(QString("create table '%1'"
"(Book_Name varchar(20),"
"Author varchar(10),"
"Word_Count int,"
"Serial_Status bit").arg(tableName));
return true;
}
void BookShow::showDetail()
{
}
void BookShow::deleteData()
{
}
void BookShow::insertData()
{
bool isOk;
QString text = QInputDialog::getText(this, "Insert",
"Please input new data:",
QLineEdit::Normal,
"you are inserting new data",
&isOk);
if(isOk)
{
QModelIndex currIndex = view->currentIndex();
model->insertRows(currIndex.row(), 1);
model->setData(currIndex, text);
view->edit(currIndex);
query->exec(QString("insert into BookInfo(Book_Name) values('%1')").arg(text));
}
}