在项目设计中, 有鼠标滑动需求,但是只能说能力有限,索性使用 php版本的数组分页,解决问题。 经常有用到分页,索性做一个简单封装、
测试用例
QTime curtime = QTime::currentTime();
nHour = curtime.hour();
nMin = curtime.minute();
nSec = curtime.second();
setTimeBtnWidget(nHour, 24, ceil(nHour / 6), 6,1, ui->verticalLayout_10);
setTimeBtnWidget(nMin, 60, ceil(nMin / 6), 6, 2, ui->verticalLayout_2);
setTimeBtnWidget(nSec, 60, ceil(nSec / 6), 6, 3, ui->verticalLayout_4);
使用方法文章来源:https://www.toymoban.com/news/detail-783521.html
/**
* @breif : 设置 时间上下按钮
* @param : index 第几个
* @param : count 总数量
* @param : page 第几页
* @param : size 显示数量
* @param : type 类型
* @param : QLayout 布局名称
* @return : void
* @date : 2024/01/10 16:28
*/
void setTimeBtnWidget(int index,int count,int page,int size,int type, QLayout* layout);
封装函数 文章来源地址https://www.toymoban.com/news/detail-783521.html
void CCalendarWidget::setTimeBtnWidget(int index,int count,int page,int size,int type, QLayout* layout)
{
clearLayout(layout);
double tatakPage = ceil(count / size);
int offset = (page - 1) * size;
for (int i = 0; i < 8; i++) {
QPushButton* pBtn = new QPushButton();
if (i == 0)
{
//星期widget
QWidget* upBtnWidget = new QWidget;
upBtnWidget->setMaximumWidth(40);
//星期布局
QHBoxLayout* layoutUpWidget = new QHBoxLayout(upBtnWidget);
pBtn->setFixedSize(10, 6);
pBtn->setChecked(true);
pBtn->setStyleSheet(
"border-image:url(:/images/Resources/images/CCalendarWidget/upBtn.png);border:none;font-size: 14px;color:#FFFFFF;");
pBtn->setCursor(Qt::PointingHandCursor);
layoutUpWidget->spacing();
layoutUpWidget->addWidget(pBtn);
layoutUpWidget->spacing();
layout->addWidget(upBtnWidget);
connect(pBtn, &QPushButton::clicked, [=]
{
if (timeIndex >= 0 && timeIndex <= tatakPage)
{
setTimeBtnWidget(timeIndex * size+3,count, timeIndex, size, type, layout);
timeIndex--;
}
else {
timeIndex = 0;
}
});
}
if (i == 7)
{
//星期widget
QWidget* downBtnWidget = new QWidget;
downBtnWidget->setMaximumWidth(40);
//星期布局
QHBoxLayout* layoutDownWidget = new QHBoxLayout(downBtnWidget);
pBtn->setFixedSize(10, 6);
pBtn->setChecked(true);
pBtn->setStyleSheet(
"border-image:url(:/images/Resources/images/CCalendarWidget/downBtn.png);border:none;font-size: 14px;color:#FFFFFF;");
pBtn->setCursor(Qt::PointingHandCursor);
layoutDownWidget->spacing();
layoutDownWidget->addWidget(pBtn);
layoutDownWidget->spacing();
layout->addWidget(downBtnWidget);
connect(pBtn, &QPushButton::clicked, [=]
{
if (timeIndex >= 0 && timeIndex < tatakPage)
{
setTimeBtnWidget(timeIndex * size + 3,count, timeIndex,size, type, layout);
timeIndex++;
}
else {
timeIndex = tatakPage-1;
}
});
}
if (i > 0 && i < 7)
{
pBtn->setChecked(true);
connect(pBtn, &QPushButton::clicked, [=]
{
int index = pBtn->text().toInt();
setTimeBtnWidget(index, count, page, size, type, layout);
if (type == 1)
{
nHour = index;
}
if (type == 2)
{
nMin = index;
}
if (type == 3)
{
nSec = index;
}
setTime();
});
pBtn->setFixedSize(40, 26);
pBtn->setText(QString::number(page * size + i-1));
pBtn->setCursor(Qt::PointingHandCursor);
layout->addWidget(pBtn);
layout->spacing();
}
if (page * size + i-1 == index)
{
pBtn->setChecked(true);
pBtn->setStyleSheet(
"background:#0D85FF;"
);
}
}
}
void CCalendarWidget::clearLayout(QLayout* layout)
{
if (!layout) return;
while (auto item = layout->takeAt(0))
{
if (item->layout())
{
clearLayout(item->layout());
}
else if (item->widget())
{
item->widget()->close();
}
}
}
到了这里,关于C++ 数组分页,经常有用到分页,索性做一个简单封装 已解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!