#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#define MINI_HEIGHT 50
inline void SwapRow(QStandardItemModel *model, int row1, int row2)
{
// 获取第一行的数据项
QList<QStandardItem*> items1;
for (int column = 0; column < model->columnCount(); ++column) {
items1.append(model->takeItem(row1, column));
}
// 获取第二行的数据项
QList<QStandardItem*> items2;
for (int column = 0; column < model->columnCount(); ++column) {
items2.append(model->takeItem(row2, column));
}
// 在第二行插入第一行的数据项
for (int column = 0; column < model->columnCount(); ++column) {
model->setItem(row2, column, items1.at(column));
}
// 在第一行插入第二行的数据项
for (int column = 0; column < model->columnCount(); ++column) {
model->setItem(row1, column, items2.at(column));
}
}
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
Init();
// 测试
//Test();
// 在 dialogWordAndBreed 关闭前,限制鼠标焦点只能在 dialogWordAndBreed 窗口中
// dialogWordAndBreed->setFocus(Qt::OtherFocusReason);
// dialogWordAndBreed->activateWindow();
// dialogWordAndBreed->setMouseTracking(true);
}
Widget::~Widget()
{
SaveDataToFile("wordItem.csv", wordTableModel);
SaveDataToFile("breed.csv", breedTableModel);
SaveDataToFile("palPool.csv", palTableModel);
delete ui;
}
void Widget::Init()
{
// 初始化弹窗
dialogWordAndBreed = new form12();
dialogPal = new Form3();
// 初始化模型并设置给tableview
wordTableModel = new QStandardItemModel();
breedTableModel = new QStandardItemModel();
palTableModel = new QStandardItemModel();
ui->wordTableView->setModel(wordTableModel);
ui->breedTableView->setModel(breedTableModel);
ui->palPoolTableView->setModel(palTableModel);
InitUI();
CreateRightMenu();
connect(dialogWordAndBreed, SIGNAL(SendText(QString)), this, SLOT(ReceiveMsg(QString)));
connect(dialogPal, SIGNAL(SendText(QString)), this, SLOT(ReceiveMsg(QString)));
// 将帕鲁才库界面复选框放到一个槽函数中处理
connect(ui->checkMakeFire, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkMakeWater, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkPlant, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkMakeElec, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkHandWork, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkTake, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkChopTree, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkMining, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkMakeDrug, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkCoolDown, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkCarry, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->checkFarm, &QCheckBox::toggled, this, &Widget::HandleFind);
connect(ui->palLineEdit, &QLineEdit::textChanged, this, &Widget::HandleFind);
// 从文件读取数据
ReadDataFromFile("wordItem.csv", wordTableModel);
ReadDataFromFile("breed.csv", breedTableModel);
ReadDataFromFile("palPool.csv", palTableModel);
SortPalPoolFromNumber();
}
void Widget::InitUI()
{
// 分别给三个表设置表头
wordTableModel->setColumnCount(3);
wordTableModel->setHeaderData(0, Qt::Horizontal, "词条名");
wordTableModel->setHeaderData(1, Qt::Horizontal, "词条效果");
wordTableModel->setHeaderData(2, Qt::Horizontal, "推荐作用");
QFont font = ui->wordTableView->horizontalHeader()->font();
font.setPointSize(16);
font.setBold(true);
ui->wordTableView->horizontalHeader()->setFont(font);
breedTableModel->setColumnCount(3);
breedTableModel->setHeaderData(0, Qt::Horizontal, "父亲");
breedTableModel->setHeaderData(1, Qt::Horizontal, "母亲");
breedTableModel->setHeaderData(2, Qt::Horizontal, "孩子");
ui->breedTableView->horizontalHeader()->setFont(font);
palTableModel->setColumnCount(6);
palTableModel->setHeaderData(0, Qt::Horizontal, "图鉴编号");
palTableModel->setHeaderData(1, Qt::Horizontal, "帕鲁名");
palTableModel->setHeaderData(2, Qt::Horizontal, "工作适应性");
palTableModel->setHeaderData(3, Qt::Horizontal, "伙伴技能");
palTableModel->setHeaderData(4, Qt::Horizontal, "技能描述");
palTableModel->setHeaderData(5, Qt::Horizontal, "掉落物");
ui->palPoolTableView->horizontalHeader()->setFont(font);
// 设置表格宽度和高度自适应且拉伸,设置最小高度为MINI_HEIGHT
ui->wordTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->wordTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->wordTableView->verticalHeader()->setMinimumSectionSize(MINI_HEIGHT);
ui->wordTableView->verticalHeader()->setDefaultSectionSize(MINI_HEIGHT);
ui->wordTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->breedTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->breedTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->breedTableView->verticalHeader()->setMinimumSectionSize(MINI_HEIGHT);
ui->breedTableView->verticalHeader()->setDefaultSectionSize(MINI_HEIGHT);
ui->breedTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//ui->breedTableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->palPoolTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->palPoolTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->palPoolTableView->verticalHeader()->setMinimumSectionSize(MINI_HEIGHT);
ui->palPoolTableView->verticalHeader()->setDefaultSectionSize(MINI_HEIGHT);
ui->palPoolTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//ui->palPoolTableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 设置单元格文字内容居中显示
CenterAlignedDelegate *delegate = new CenterAlignedDelegate;
ui->wordTableView->setItemDelegate(delegate);
ui->breedTableView->setItemDelegate(delegate);
ui->palPoolTableView->setItemDelegate(delegate);
// 设置表头和首行的边界线
ui->wordTableView->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-left:0px solid #E5E5E5;"
"border-top:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom:0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
ui->breedTableView->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-left:0px solid #E5E5E5;"
"border-top:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom:0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
ui->palPoolTableView->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-left:0px solid #E5E5E5;"
"border-top:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom:0.5px solid #E5E5E5;"
"background-color:wh