完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
要求:(基于属性版、静态成员函数都使用)实现对话框的弹出
#include "mywidget.h" #include "ui_mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) , ui(new Ui::MyWidget) { ui->setupUi(this); this->setWindowFlag(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); connect(this,&MyWidget::my_signal_1,[=](){ this->showMinimized(); }); connect(this,&MyWidget::my_signal_2,[=](){ if(this->window()->isMaximized()) { this->showNormal(); } else { this->showMaximized(); } }); } MyWidget::~MyWidget() { delete ui; } void MyWidget::on_pushButton_clicked() { //登陆成功则弹出信息对话框,提示登陆成功,点击OK后关闭登录页面跳转到另一页面 if(ui->Username->text() == "admin" && ui->Passwd->text() == "123456") { // //基于属性版本实现消息对话框 // QMessageBox msg(QMessageBox::Information,"Login","登陆成功",QMessageBox::Ok,this); // int ret = msg.exec(); //基于静态成员函数实现 int ret = QMessageBox::information(this,"Login","登陆成功",QMessageBox::Ok); if(ret == QMessageBox::Ok) { this->close(); emit my_jump(); } } //登录失败则弹出错误对话框,给出信息“账号和密码不匹配,是否重新登录”,点击Yes清除密码内容,点击No直接关闭登录界面 else { // //基于属性版本实现消息对话框 // QMessageBox msg(QMessageBox::Critical,"Login","账号密码不匹配,是否重新登陆",QMessageBox::Yes | QMessageBox::No,this); // int ret = msg.exec(); //基于静态成员函数实现 int ret = QMessageBox::critical(this,"Login","账号密码不匹配,是否重新登陆",QMessageBox::Yes | QMessageBox::No); if(ret == QMessageBox::Yes) { ui->Passwd->clear(); } else { this->close(); } } } void MyWidget::on_pushButton_2_clicked() { //用户点击取消按钮,弹出一个问题对话框,给出信息"您是否确定要退出登录?",点击Yes关闭登录界面,点击No关闭对话框 // //基于属性版本实现消息对话框 // QMessageBox msg(QMessageBox::Question,"Login","您是否确定退出登录?",QMessageBox::Yes | QMessageBox::No,this); // int ret = msg.exec(); // int ret = QMessageBox::question(this,"Login","您是否确定退出登录?",QMessageBox::Yes | QMessageBox::No); // if(ret == QMessageBox::Yes) // { // this->close(); // } // else // { // msg.close(); // } //基于静态成员函数实现 int ret = QMessageBox::question(this,"Login","您是否确定退出登录?",QMessageBox::Yes | QMessageBox::No); if(ret == QMessageBox::Yes) { this->close(); } } void MyWidget::on_pushButton_3_clicked() { emit my_signal_1(); } void MyWidget::on_pushButton_4_clicked() { emit my_signal_2(); }
使用定时器事件 实现闹钟
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //在sys_time_label中获取系统时间 id1 = startTimer(1000); } Widget::~Widget() { delete ui; } void Widget::timerEvent(QTimerEvent *e) { //系统时间 if(e->timerId()==id1) { QTime sys_time = QTime::currentTime(); QString t = sys_time.toString("hh:mm:ss"); ui->sys_time_label->setText(t); } //语音播报 else if(e->timerId()==id2) { QTime sys_time = QTime::currentTime(); QString t = sys_time.toString("hh:mm:ss"); if(ui->lineEdit->text() == ui->sys_time_label->text()) { QTextToSpeech *speaker = new QTextToSpeech; speaker->setLocale(QLocale::Chinese); //speaker->setVoice(QVoice::Unknown); for(int i=0; i<3; i++) { speaker->say(ui->naozhong_label->text()); } } } } void Widget::on_pushButton_clicked() { //按下启动按钮,当到达设定时间触发闹钟,语音播报 if(ui->pushButton->text() == "启动") { id2 = startTimer(1000); ui->pushButton->setText("关闭"); } else { killTimer(id2); ui->pushButton->setText("启动"); } }
6.18作业
最新推荐文章于 2025-05-13 23:58:56 发布