diff --git a/softwareDirectory/AutoVerScheme/PageControl.cpp b/softwareDirectory/AutoVerScheme/PageControl.cpp new file mode 100644 index 0000000..d0fd72b --- /dev/null +++ b/softwareDirectory/AutoVerScheme/PageControl.cpp @@ -0,0 +1,154 @@ +#include "PageControl.h" + +PagedTableWidget::PagedTableWidget(QWidget *parent,QHBoxLayout *PageLayout) : QWidget(parent), rowsPerPage(10), currentPage(0) { + pageLayout = PageLayout; + if (pageLayout) { + // 遍历并删除布局中的所有项 + while (QLayoutItem *item = pageLayout->takeAt(0)) { + // 删除项,这会释放相应的QWidget(如果存在) + delete item->widget(); + // 删除QLayoutItem本身 + delete item; + } + } + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->addLayout(pageLayout); + setLayout(mainLayout); +} + +PagedTableWidget::~PagedTableWidget() { + for (auto button : pageButtons) { + delete button; + } +} + +void PagedTableWidget::setData(const QList> &data, int rowsPerPage,QTableWidget *table) { + tableWidget=table; + + this->rowsPerPage = rowsPerPage; + allData = data; + currentPage = 0; + createPageButtons(); + updateTable(); +} + +void PagedTableWidget::setCurrentPage(int page) { + if (page >= 0 && page < pageButtons.size()) { + /*for (auto button : pageButtons) { + //button->setChecked(false); + button->setChecked(false); + }*/ + currentPage = page; + updateTable(); + emit pageChanged(page); + } +} + +void PagedTableWidget::onPageButtonClicked() { + for (auto button : pageButtons) { + button->setChecked(false); + } + QPushButton *button = qobject_cast(sender()); + if (button) { + button->setChecked(true); + int pageIndex = pageButtons.indexOf(button); + setCurrentPage(pageIndex-1); + } +} +void PagedTableWidget::onPageSwitching(bool Switch) +{ + QPushButton *Currbutton; + for (auto button : pageButtons) { + button->setChecked(false); + } + QPushButton *button = qobject_cast(sender()); + if (button) { + + if(Switch){ + currentPage++; + if(currentPage>calculateTotalPages()-1) + { + currentPage=calculateTotalPages()-1; + } + + }else{ + currentPage--; + if(currentPage<0) + { + currentPage=0; + } + + } + for (auto button : pageButtons) { + if(button->text()==QString::number(currentPage+1)) + { + button->setChecked(true); + } + } + int pageIndex = currentPage; + setCurrentPage(pageIndex); + } +} +void PagedTableWidget::updateTable() { + //tableWidget->clear(); + tableWidget->setRowCount(0); + //tableWidget->setRowCount(rowsPerPage); + int startRow = currentPage * rowsPerPage; + int endRow = std::min(startRow + rowsPerPage, allData.size()); + //tableWidget->setRowCount(endRow - startRow); + int rowCount = 0; + for (int i = startRow; i < endRow; ++i) { + rowCount = tableWidget->rowCount(); + tableWidget->insertRow(i - startRow); + for (int j = 0; j < allData[i].count(); ++j) { + tableWidget->setItem(i - startRow, j, new QTableWidgetItem(allData[i][j])); + } + } +} + +void PagedTableWidget::createPageButtons() { + int totalPages = calculateTotalPages(); + for (auto button : pageButtons) { + pageLayout->removeWidget(button); + delete button; + } + pageButtons.clear(); + + for (int i = 0; i < totalPages; ++i) { + if(i==0) + { + QPushButton *PageUpbutton = new QPushButton("上一页"); + pageButtons.append(PageUpbutton); + pageLayout->addWidget(PageUpbutton); + connect(PageUpbutton, &QPushButton::clicked, this, [this]() { + this->onPageSwitching(false); + }); + + } + + + QPushButton *button = new QPushButton(QString::number(i + 1)); + button->setStyleSheet("QPushButton:checked {color: blue;}"); + + button->setCheckable(true); + connect(button, &QPushButton::clicked, this, &PagedTableWidget::onPageButtonClicked); + if (i == currentPage) { + button->setChecked(true); + } + pageButtons.append(button); + pageLayout->addWidget(button); + if(i==totalPages-1) + { + QPushButton *PageNextbutton = new QPushButton("下一页"); + pageButtons.append(PageNextbutton); + pageLayout->addWidget(PageNextbutton); + connect(PageNextbutton, &QPushButton::clicked, this, [this]() { + this->onPageSwitching(true); + }); + } + } +} + +int PagedTableWidget::calculateTotalPages() { + return ((allData.count() + rowsPerPage -1) / rowsPerPage); +} diff --git a/softwareDirectory/AutoVerScheme/PageControl.cpp b/softwareDirectory/AutoVerScheme/PageControl.cpp new file mode 100644 index 0000000..d0fd72b --- /dev/null +++ b/softwareDirectory/AutoVerScheme/PageControl.cpp @@ -0,0 +1,154 @@ +#include "PageControl.h" + +PagedTableWidget::PagedTableWidget(QWidget *parent,QHBoxLayout *PageLayout) : QWidget(parent), rowsPerPage(10), currentPage(0) { + pageLayout = PageLayout; + if (pageLayout) { + // 遍历并删除布局中的所有项 + while (QLayoutItem *item = pageLayout->takeAt(0)) { + // 删除项,这会释放相应的QWidget(如果存在) + delete item->widget(); + // 删除QLayoutItem本身 + delete item; + } + } + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->addLayout(pageLayout); + setLayout(mainLayout); +} + +PagedTableWidget::~PagedTableWidget() { + for (auto button : pageButtons) { + delete button; + } +} + +void PagedTableWidget::setData(const QList> &data, int rowsPerPage,QTableWidget *table) { + tableWidget=table; + + this->rowsPerPage = rowsPerPage; + allData = data; + currentPage = 0; + createPageButtons(); + updateTable(); +} + +void PagedTableWidget::setCurrentPage(int page) { + if (page >= 0 && page < pageButtons.size()) { + /*for (auto button : pageButtons) { + //button->setChecked(false); + button->setChecked(false); + }*/ + currentPage = page; + updateTable(); + emit pageChanged(page); + } +} + +void PagedTableWidget::onPageButtonClicked() { + for (auto button : pageButtons) { + button->setChecked(false); + } + QPushButton *button = qobject_cast(sender()); + if (button) { + button->setChecked(true); + int pageIndex = pageButtons.indexOf(button); + setCurrentPage(pageIndex-1); + } +} +void PagedTableWidget::onPageSwitching(bool Switch) +{ + QPushButton *Currbutton; + for (auto button : pageButtons) { + button->setChecked(false); + } + QPushButton *button = qobject_cast(sender()); + if (button) { + + if(Switch){ + currentPage++; + if(currentPage>calculateTotalPages()-1) + { + currentPage=calculateTotalPages()-1; + } + + }else{ + currentPage--; + if(currentPage<0) + { + currentPage=0; + } + + } + for (auto button : pageButtons) { + if(button->text()==QString::number(currentPage+1)) + { + button->setChecked(true); + } + } + int pageIndex = currentPage; + setCurrentPage(pageIndex); + } +} +void PagedTableWidget::updateTable() { + //tableWidget->clear(); + tableWidget->setRowCount(0); + //tableWidget->setRowCount(rowsPerPage); + int startRow = currentPage * rowsPerPage; + int endRow = std::min(startRow + rowsPerPage, allData.size()); + //tableWidget->setRowCount(endRow - startRow); + int rowCount = 0; + for (int i = startRow; i < endRow; ++i) { + rowCount = tableWidget->rowCount(); + tableWidget->insertRow(i - startRow); + for (int j = 0; j < allData[i].count(); ++j) { + tableWidget->setItem(i - startRow, j, new QTableWidgetItem(allData[i][j])); + } + } +} + +void PagedTableWidget::createPageButtons() { + int totalPages = calculateTotalPages(); + for (auto button : pageButtons) { + pageLayout->removeWidget(button); + delete button; + } + pageButtons.clear(); + + for (int i = 0; i < totalPages; ++i) { + if(i==0) + { + QPushButton *PageUpbutton = new QPushButton("上一页"); + pageButtons.append(PageUpbutton); + pageLayout->addWidget(PageUpbutton); + connect(PageUpbutton, &QPushButton::clicked, this, [this]() { + this->onPageSwitching(false); + }); + + } + + + QPushButton *button = new QPushButton(QString::number(i + 1)); + button->setStyleSheet("QPushButton:checked {color: blue;}"); + + button->setCheckable(true); + connect(button, &QPushButton::clicked, this, &PagedTableWidget::onPageButtonClicked); + if (i == currentPage) { + button->setChecked(true); + } + pageButtons.append(button); + pageLayout->addWidget(button); + if(i==totalPages-1) + { + QPushButton *PageNextbutton = new QPushButton("下一页"); + pageButtons.append(PageNextbutton); + pageLayout->addWidget(PageNextbutton); + connect(PageNextbutton, &QPushButton::clicked, this, [this]() { + this->onPageSwitching(true); + }); + } + } +} + +int PagedTableWidget::calculateTotalPages() { + return ((allData.count() + rowsPerPage -1) / rowsPerPage); +} diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5791c44..d551972 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -132,8 +132,6 @@ } //设置分页控件 // 创建分页表格控件 - //设置分页控件 - // 创建分页表格控件 PagedTableWidget *pagedTable = new PagedTableWidget(this, ui->HBoxPageLayout); //data转换位QList>