• C++&QT---QT-day3


            使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456"。
            点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到新的界面中,如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录?,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面,如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. //窗口相关设置
    9. this->setWindowTitle("登陆界面");
    10. this->setWindowIcon(QIcon(":/picture/pdx2.png"));
    11. //标签相关设置
    12. ui->lab1->setPixmap(QPixmap(":/picture/pdx3.webp"));
    13. ui->lab1->setScaledContents(true);//自适应大小
    14. ui->lab2->resize(40,40);//添加账号的图片
    15. ui->lab2->setPixmap(QPixmap(":/picture/userName.jpg"));
    16. ui->lab2->setScaledContents(true);
    17. ui->lab3->resize(40,40);//添加密码的图片
    18. ui->lab3->setPixmap(QPixmap(":/picture/passwd.jpg"));
    19. ui->lab3->setScaledContents(true);
    20. ui->btn1->setIcon(QIcon(":/picture/cancel.png"));//添加取消的图片
    21. ui->btn2->setIcon(QIcon(":/picture/login.png"));//添加登陆的图片
    22. ui->lineEdit1->setPlaceholderText("账号");//设置占位字符
    23. ui->lineEdit2->setPlaceholderText("密码");
    24. ui->lineEdit2->setEchoMode(QLineEdit::Password);//密码模式
    25. connect(ui->btn1,SIGNAL(clicked()),this,SLOT(btn1_cancel()));//qt4不友好连接
    26. connect(ui->btn2,&QPushButton::clicked,this,&Widget::btn2_login);//qt5友好连接
    27. }
    28. Widget::~Widget()
    29. {
    30. delete ui;
    31. }
    32. void Widget::btn1_cancel()//自定义取消按钮函数
    33. {
    34. //基于静态成员函数消息对话框
    35. int ret = QMessageBox::information(this,"提示","您是否确定要退出登录?",
    36. QMessageBox::Yes | QMessageBox::No);//提供两个选项
    37. if(ret == QMessageBox::Yes)
    38. this->close();//关闭当前窗口
    39. }
    40. void Widget::btn2_login()//自定义登陆按钮函数
    41. {
    42. if(ui->lineEdit1->text()=="admin" && ui->lineEdit2->text()=="123456")
    43. {
    44. QMessageBox msg( //基于属性版本的消息对话框
    45. QMessageBox::Information,
    46. "提示",
    47. "登陆成功",
    48. QMessageBox::Ok,
    49. this);
    50. msg.exec();//执行对话框函数
    51. //QMessageBox::information(this,"提示","登陆成功");//基于静态成员函数消息对话框
    52. this->close();//关闭当前窗口
    53. emit jump();//调用跳转函数
    54. }
    55. else
    56. {
    57. // QMessageBox msg( //基于属性版本的消息对话框
    58. // QMessageBox::Critical,
    59. // "错误",
    60. // "账号和密码不匹配,是否重试?",
    61. // QMessageBox::Yes | QMessageBox::No,
    62. // this);
    63. // int ret = msg.exec();
    64. //基于静态成员函数消息对话框
    65. int ret = QMessageBox::critical(this,"错误","账号和密码不匹配,是否重试?",
    66. QMessageBox::Yes | QMessageBox::No);//提供两个选项
    67. if(ret == QMessageBox::Yes)
    68. ui->lineEdit2->clear();//清空密码栏
    69. else
    70. this->close();//关闭当前窗口
    71. }
    72. }

    1. /*自定义文本框功能,修改字体、颜色、读取、保存*/
    2. #include "second.h"
    3. #include "ui_second.h"
    4. second::second(QWidget *parent) :
    5. QWidget(parent),
    6. ui(new Ui::second)
    7. {
    8. ui->setupUi(this);
    9. }
    10. second::~second()
    11. {
    12. delete ui;
    13. }
    14. void second::on_pushButton_clicked()
    15. {
    16. bool ok;
    17. QFont f = QFontDialog::getFont(&ok,
    18. QFont("隶书",8,10,false),
    19. this,
    20. "字体");
    21. if(ok)
    22. {
    23. ui->textEdit->setCurrentFont(f);
    24. }
    25. else
    26. {
    27. QMessageBox::information(this,"提示","未选中字体");
    28. }
    29. }
    30. void second::on_pushButton_2_clicked()
    31. {
    32. QColor c = QColorDialog::getColor(QColor(255,0,255),
    33. this,
    34. "颜色对话框");
    35. if(c.isValid())
    36. {
    37. ui->textEdit->setTextColor(c);//设置前景色
    38. //ui->textEdit->setTextBackgroundColor(c);//背景色
    39. }
    40. else
    41. {
    42. QMessageBox::information(this,"提示","未选中文本");
    43. }
    44. }
    45. void second::on_pushButton_3_clicked()
    46. {
    47. QString filename = QFileDialog::getOpenFileName(this,
    48. "打开文件",
    49. "./",
    50. "All(*.*);;Img(*.jpg *.gif *.png);;文本(*.txt)");
    51. qDebug() << filename;
    52. QFile file(filename);
    53. if(!file.exists())//判断文件是否存在
    54. {
    55. return ;
    56. }
    57. if(!file.open(QFile::ReadWrite))//判断是否能成功打开
    58. {
    59. return ;
    60. }
    61. QByteArray msg = file.readAll();//读取文件内容
    62. file.close();
    63. ui->textEdit->setText(msg);
    64. }
    65. void second::on_pushButton_4_clicked()
    66. {
    67. QString fileName = QFileDialog::getSaveFileName(this);
    68. //实例化一个文件类对象
    69. QFile file(fileName);
    70. //打开文件
    71. file.open(QFile::WriteOnly);
    72. //获取textEdit上的内容
    73. QString msg = ui->textEdit->toPlainText();
    74. //写入数据
    75. file.write(msg.toLocal8Bit());
    76. file.close();
    77. }
    78. //第一个窗口信号对应的槽函数实现
    79. void second::jumpslot()
    80. {
    81. this->show();
    82. }

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. QT_BEGIN_NAMESPACE
    8. namespace Ui { class Widget; }
    9. QT_END_NAMESPACE
    10. class Widget : public QWidget
    11. {
    12. Q_OBJECT
    13. public:
    14. Widget(QWidget *parent = nullptr);
    15. ~Widget();
    16. public slots:
    17. void btn1_cancel();//自定义信号函数
    18. void btn2_login();
    19. signals:
    20. void jump();//自定义一个跳转信号
    21. private:
    22. Ui::Widget *ui;
    23. };
    24. #endif // WIDGET_H
    1. #ifndef SECOND_H
    2. #define SECOND_H
    3. #include
    4. #include
    5. #include //字体对话框类
    6. #include
    7. #include //消息对话框类
    8. #include //颜色对话框类
    9. #include
    10. #include //文件对话框类
    11. #include
    12. namespace Ui {
    13. class second;
    14. }
    15. class second : public QWidget
    16. {
    17. Q_OBJECT
    18. public:
    19. explicit second(QWidget *parent = nullptr);
    20. ~second();
    21. public slots:
    22. void jumpslot(); //对应第一个窗口信号的槽函数声明
    23. private slots:
    24. void on_pushButton_clicked();
    25. void on_pushButton_2_clicked();
    26. void on_pushButton_3_clicked();
    27. void on_pushButton_4_clicked();
    28. private:
    29. Ui::second *ui;
    30. };
    31. #endif // SECOND_H

     

     

     

  • 相关阅读:
    测试用例设计方法之判定表法
    前端入门学习笔记三十六
    元素跟随鼠标移动
    基于二维切片图序列的三维立体建模MATLAB仿真
    各平台更新根证书
    小说推文、短剧cps推广和带影达人好做吗
    网络安全(大厂面试真题集)
    搭建一个QQ机器人叫女友起床
    船舶物资与市场杂志船舶物资与市场杂志社船舶物资与市场编辑部2022年第7期目录
    Java基础---第十篇
  • 原文地址:https://blog.csdn.net/qq_53195772/article/details/133933578