加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
set.cpp 5.26 KB
一键复制 编辑 原始数据 按行查看 历史
NKEO2333 提交于 2024-08-22 23:23 . update
#include "set.h"
#include "ui_set.h"
#include "myapp.h"
qint64 set::set_time = 0;
QString set::currentTimeString = "currentTimeString";
QString set::clockTimeShow = "clockTimeShow";
QStringList set::clockList;
QStringListModel set::model;
QList<qint64> set::Time_data;
set::set(QWidget *parent) :
QWidget(parent),
ui(new Ui::set)
{
ui->setupUi(this);
//建立背景;
//QLabel *background = new QLabel(this);
//background->setPixmap(QPixmap(":/Rescoure_File/Main_BK.png")); // 或者使用绝对路径
//background->setGeometry(0, 0, this->width(), this->height());
//background->lower(); // 将背景放在最底层
//background->show();
QPalette palette;//设置页面背景
palette.setBrush(QPalette::Background, QBrush(QPixmap(":/Rescoure_File/10.jpg").scaled(this->size())));
this->setPalette(palette);
this->ui->pushButton->setIcon(QIcon(":/Rescoure_File/25.png"));//设置返回按钮
this->ui->pushButton->setStyleSheet("border-image:url(:/Rescoure_File/25.png); ");
// 初始化数据
this->currentTimeString = QDateTime::currentDateTime().toString("HH:mm");
this->clockTimeShow = this->currentTimeString;
ui->lcdNumber->display(this->clockTimeShow);
// 初始化计时器
this->clockTimer = new QTimer(this);
this->clockTimer->start(1000);
connect(this->clockTimer, &QTimer::timeout, this, &set::showCurrentTime);
// 按钮连接信号槽
}
set::~set()
{
delete ui;
}
void set::sortAlarms()
{
// 对 Time_data 进行升序排序
std::sort(Time_data.begin(), Time_data.end());
// 清空旧的闹钟列表
clockList.clear();
// 根据排序后的 Time_data 重新生成 clockList
for (const qint64 &alarmTime : Time_data) {
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(alarmTime);
QString timeString = dateTime.toString("HH:mm");
clockList.append("闹钟:" + timeString);
}
// 更新模型中的数据
model.setStringList(clockList);
// 刷新列表视图
ui->listView->setModel(&model);
ui->listView->update();
qDebug() << "Alarms sorted!";
}
void set::adjustTime(int seconds) {
qDebug() << "adjustTime called with seconds:" << seconds;
QTime time = QTime::fromString(this->clockTimeShow, "HH:mm");
if (time.isValid()) {
time = time.addSecs(seconds); // 添加指定秒数
this->clockTimeShow = time.toString("HH:mm");
ui->lcdNumber->display(clockTimeShow);
qDebug() << "Adjusted time:" << clockTimeShow;
} else {
qDebug() << "Time parsing error:" << this->clockTimeShow;
}
}
// 加一小时
void set::on_pushButton_5_clicked() {
adjustTime(3600); // 加一小时
}
// 减一小时
void set::on_pushButton_3_clicked() {
adjustTime(-3600); // 减一小时
}
// 加一分钟
void set::on_addMin_btn_clicked()
{
adjustTime(60); // 加一分钟
}
// 减一分钟
void set::on_pushButton_4_clicked() {
adjustTime(-60); // 减一分钟
}
// 显示当前时间
void set::showCurrentTime() {
QString currentTimeTmp = QDateTime::currentDateTime().toString("HH:mm:ss");
ui->label->setText("当前时间为:" + currentTimeTmp);
}
// 设置闹钟并存储到 Time_data 容器
void set::on_pushButton_2_clicked()
{
QString clockSetHourStr = this->clockTimeShow.left(2);
QString clockSetMinuteStr = this->clockTimeShow.right(2);
int clockSetMinuteInt = clockSetMinuteStr.toInt();
int clockSetHourInt = clockSetHourStr.toInt();
QDate currentDate = QDate::currentDate();
QDateTime dateTime = QDateTime(currentDate);
qint64 midnightTimestamp = dateTime.toSecsSinceEpoch();
int currentTimeHourTmpInt = QDateTime::currentDateTime().toString("HH").toInt();
int currentTimeMinuteTmpInt = QDateTime::currentDateTime().toString("mm").toInt();
set_time = (clockSetHourInt * 3600) + (clockSetMinuteInt * 60) + midnightTimestamp;
if (clockSetHourInt < currentTimeHourTmpInt ||
(clockSetHourInt == currentTimeHourTmpInt && clockSetMinuteInt <= currentTimeMinuteTmpInt)) {
set_time += 60 * 60 * 24;
}
set::Time_data.append(set_time);
qDebug() << "clock set!";
qDebug() << set_time;
if(set::clockList.contains(clockSetHourStr + ":" + clockSetMinuteStr)){
QMessageBox msgBox;
msgBox.setText("闹钟设置重复");
msgBox.exec();
return;
}
set::clockList.append("闹钟:" + clockSetHourStr + ":" + clockSetMinuteStr);
qDebug() << set::clockList.back();
model.setStringList(set::clockList);
ui->listView->setModel(&model);
ui->listView->show();
QMessageBox msgBox;
msgBox.setText("闹钟设置成功");
msgBox.exec();
}
void set::on_pushButton_clicked()
{
this->close();
myapp::getapp()->widget->show();
}
void set::on_listView_doubleClicked(const QModelIndex &index)
{
// 获取模型中的行号
int row = index.row();
// 确保行号有效
if (row >= 0 && row < Time_data.size()) {
// 从容器中删除对应的闹钟
Time_data.removeAt(row);
// 从闹钟列表中删除对应的字符串项
clockList.removeAt(row);
// 重新排序并更新视图
sortAlarms();
qDebug() << "Removed alarm at row:" << row;
} else {
qDebug() << "Invalid row index:" << row;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化