思維導圖
練習題
1>完善對話框,點擊登錄對話框,如果賬號和密碼匹配,則彈出信息對話框,給出提示”登錄成功“,提供一個Ok按鈕,用戶點擊Ok后,關閉登錄界面,跳轉到其他界面。如果賬號和密碼不匹配,彈出錯誤對話框,給出信息”賬號和密碼不匹配,是否重新登錄“,并提供兩個按鈕Yes|No,用戶點擊Yes后,清除密碼框中的內容,繼續讓用戶進行登錄,如果用戶點擊No按鈕,則直接關閉登錄界面。如果用戶點擊取消按鈕,則彈出一個問題對話框,給出信息”您是否確定要退出登錄?“,并給出兩個按鈕Yes|No,用戶迪納基Yes后,關閉登錄界面,用戶點擊No后,關閉對話框,繼續執行登錄功能。
要求:基于屬性版和基于靜態成員函數版至少各用一個
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowFlag(Qt::FramelessWindowHint);this->setAttribute(Qt::WA_TranslucentBackground);connect(ui->loginBtn, &QPushButton::clicked, this, &Widget::loginBtn);
}// 登錄按鈕
void Widget::loginBtn()
{QString username = ui->lineEdit1->text();QString password = ui->lineEdit2->text();if (username == "admin" && password == "123456"){//基于靜態函數的消息對話框int ret = QMessageBox::information(this,"消息提示","登錄成功",QMessageBox::Ok);//如果收到OK回復,跳轉窗口if(ret == QMessageBox::Ok){emit my_jump_signal();}this->close(); // 關閉窗口}else{//基于屬性的消息對話框QMessageBox msg(QMessageBox::Critical,"錯誤","賬號和密碼不匹配,是否重新登錄",QMessageBox::Yes | QMessageBox::No,this);int ret = msg.exec();//基于屬性的對話框需要用exec獲取返回if(ret == QMessageBox::Yes){ui->lineEdit2->clear(); // 清空密碼框內容}else{this->close();}}
}
//取消按鈕
void Widget::on_cancelBtn_clicked()
{//基于靜態函數的消息對話框int ret = QMessageBox::question(this,"問題","是否退出登錄",QMessageBox::Yes | QMessageBox::No);if(ret == QMessageBox::No){}else{this->close();}
}Widget::~Widget()
{delete ui;
}