QT--day3

ops/2024/11/13 9:51:28/

1、mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H
 
 
#include <QWidget>
#include<QIcon> //图标类
#include<QLabel> //标签类
#include<QMovie> //动图类
#include<QLineEdit> //行编辑器类
#include<QPushButton> //按钮类
#include <QDebug>
#include <QMessageBox>
 
 
QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE
 
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    QPushButton *btn;
     QLineEdit *edit1;
     QLineEdit *edit2;
 
 
public:
    MyWidget(QWidget *parent = nullptr);
    ~MyWidget();
signals:
    void  jump();
public slots:
    void  signal();
private:
    Ui::MyWidget *ui;
};
#endif // MYWIDGET_H
 
 

 mywidget.cpp源文件

 

#include "mywidget.h"
 
 
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    //==============窗口相关设置=======
    this->resize(540,415);
    this->setFixedSize(540,415);
    //窗口标题
    this->setWindowTitle("盗版QQ");
    //窗口图标
    this->setWindowIcon(QIcon(":/pictrue/qq.png"));
    //背景颜色
    this->setStyleSheet("background-color:white");
    //去掉头部
    this->setWindowFlag(Qt::FramelessWindowHint);
 
 
    //============标签相关设置=======
    QLabel *lab1 = new QLabel(this);
    //设置大小
    lab1->resize(540, 160);
    lab1->setStyleSheet("background-color:pink");
    //动图类 接收动图
    QMovie *mv = new QMovie(":/pictrue/zz.gif");
    //将动图放入标签中
    lab1->setMovie(mv);
    //让动图动起来
    mv->start();
    //自动适应
    lab1->setScaledContents(true);
 
 
    QLabel *lab2 = new QLabel(this);
    lab2->resize(30,30);
    lab2->move(120,210);
    lab2->setPixmap(QPixmap(":/pictrue/wodepeizhenshi.png"));
    lab2->setScaledContents(true);
 
 
    QLabel *lab3 = new QLabel(this);
    lab3->resize(30,30);
    lab3->move(120, 260);
    lab3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));
    lab3->setScaledContents(true);
 
 
    //============行编辑器相关设置=======
    this->edit1 = new QLineEdit(this);
    edit1->resize(275,30);
    edit1->move(155,210);
    edit1->setPlaceholderText("QQ号/手机号/邮箱");
 
 
    this->edit2 = new QLineEdit(this);
    edit2->resize(275,30);
    edit2->move(155,260);
    edit2->setPlaceholderText("密码");
    edit2->setEchoMode(QLineEdit::Password);
 
 
 
 
    //============按钮相关设置=======
    this->btn = new QPushButton("登录",this);
    btn->resize(300,45);
    btn->move(120,345);
    //样式函数setStyleSheet()
    btn->setStyleSheet("background-color:rgb(8,189,253);border-radius:5px;color:white");
 
   // connect(btn,&QPushButton::clicked,edit1,&QLineEdit::textChanged);
  //  connect(btn,&QPushButton::clicked,edit2,&QLineEdit::textChanged);
    connect(edit1,&QLineEdit::textChanged,this,&MyWidget::signal);
     connect(edit2,&QLineEdit::textChanged,this,&MyWidget::signal);
     connect(btn,&QPushButton::clicked,[=](){                       //按钮信号的处理,判断输入的数据与设置是否相同,
             if(edit1->text()=="pangmao"&&edit2->text()=="555555")
             {
                 int btn1 = QMessageBox::warning(this,
                                                "信息对话框",
                                                "成功登录",
                                                QMessageBox::Ok,
                                                QMessageBox::Ok);
                 if(btn1 == QMessageBox::Ok)
                 {
                     emit jump();
                     this->close();
                 }
 
 
//                 qDebug() << "登录成功";
//                 emit jump();
//                 this->close();
             }
             else
             {
                 int btn2 = QMessageBox::warning(this,
                                                "错误对话框",
                                                "登录失败,是否重新登录",
                                                QMessageBox::Ok|QMessageBox::No,
                                                QMessageBox::Ok);
                 if(btn2 == QMessageBox::Ok)
                 {
                    edit1->clear();
                    edit2->clear();
                 }
 
                 else if(btn2 ==QMessageBox::No)
                 {
                  this->close();
                 }
//                 qDebug() << "登录失败,密码账号有错误,请重新输入";
//                 edit1->clear();
//                 edit2->clear();
             }
 
     });
 
}
 
 
 
//按钮颜色的设置
void MyWidget::signal()
{
    if(edit1->text().size()>=5 && edit2->text().size()>=5){
              btn->setStyleSheet("background-color:green");
            }
    else
    {
        btn->setStyleSheet("background-color:rgb(8,189,253)");
    }
 
}
 
 
MyWidget::~MyWidget()
{
}
 

 第二个界面,second.h

#ifndef SECOND_H
#define SECOND_H
 
#include <QWidget>
#include <QFontDialog>
#include <QFont>
#include <QTextEdit>
#include <QColor>
#include <QColorDialog>
#include <QString>
#include <QFileDialog>
#include <QDebug>
#include <QMessageBox>
#include <QByteArray>
 
namespace Ui {
class Second;
}
 
class Second : public QWidget
{
    Q_OBJECT
 
public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();
public slots:
    void jump_slots();
private slots:
 
    void on_zitibtn_clicked();
 
    void on_pushButton_2_clicked();
 
    void on_openbtn_clicked();
 
    void on_savebtn_clicked();
 
private:
    Ui::Second *ui;
};
 
#endif // SECOND_H
 

 第二个界面的源文件,second.cpp

#include "second.h"
#include "ui_second.h"
 
Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);
}
 
Second::~Second()
{
    delete ui;
}
 
void Second::jump_slots()
{
    this->show();
}
 
 
 
 
 
void Second::on_zitibtn_clicked()
{
    bool ok = false;
   QFont f = QFontDialog::getFont(&ok,       //返回用户是否选择了字体
                                  QFont("宋体",10,10,true),  //门对话框初始字体1父组件
                                  this,
                                  "选择字体");//对话框标题
    //2、使用选中的字体
    if(ok)
    //ui->textEdit->setFont(f);
    ui->textEdit->setCurrentFont(f);
    //将字体应用于所有文本
    //将选中的文本设罚相关字体
}
//颜色按钮的设置
void Second::on_pushButton_2_clicked()
{
    QColor c= QColorDialog::getColor(QColor("red"),
                                            this,
                                            "选择颜色");
 
    if(c.isValid()==true)
    {
        ui->textEdit->setTextColor(c);
        //ui->textEdit->setTextBackgroundColor(c);
    }
}
 
//打开按钮的设置
void Second::on_openbtn_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this,
                                                    "选择文件",
                                                    "./",
                                                    "all(*.*);;images(*.png*.jpg*.gif);;源文件(*.cpp)");
 
    qDebug() << filename;
    QFile file(filename);
 
 
    if(file.open(QFile::ReadOnly)==false)
    {
 
     QMessageBox::information(this,
                              "提示",
                             "文件打开失败");
     return;
    }
                //3、读取文件中的内容
     QByteArray msg = file.readAll();
                //4、将读取出来的数据,展示到文本编辑器中
                ui->textEdit->setText(msg);
                //5、关闭文件
                file.close();
 
}
//保存按钮
void Second::on_savebtn_clicked()
{
      QString filename = QFileDialog::getOpenFileName(this,
                                                      "保存文件",
                                                      "./",
                                                      tr("Text File(*.txt)"));
 
      if(filename == "")
          {
              return;
          }
          QFile file(filename);
          if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
          {
              QMessageBox::warning(this,tr("错误"),tr("打开文件失败"));
              return;
          }
          else
          {
              QTextStream textStream(&file);
              QString str = ui->textEdit->toPlainText();
              textStream<<str;
              QMessageBox::warning(this,tr("提示"),tr("保存文件成功"));
 
          }
}
 

主函数

#include "mywidget.h"
#include "second.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget w;
    w.show();
    Second s;
    w.show();
 
    w.connect(&w,&MyWidget::jump,&s,&Second::jump_slots);//连接界面
    return a.exec();
}
 

 

 

 

 

 

 2、思维导图

 

 


http://www.ppmy.cn/ops/40029.html

相关文章

树莓派、ubuntu低版本python3安装库

如果遇到树莓派中自带低版本python3&#xff0c;又不想额外去安装python3时&#xff0c;可能会遇到版本过低&#xff0c;无法安装库的情况&#xff0c;以下用我实际情况举例解决方案。 本次遇到的问题是树莓派低版本中&#xff0c;python3为3.7.3&#xff0c;需要安装numpy&am…

漫谈ApplicationContext和BeanFactory的区别

各位大佬光临寒舍&#xff0c;希望各位能赏脸给个三连&#xff0c;谢谢各位大佬了&#xff01;&#xff01;&#xff01; 目录 1.背景介绍 2.细述ApplicationContext和BeanFactory 3.总结 1.背景介绍 当我们使用SpringBoot创建项目的时候会看到一串代码&#xff1a…

第九届“数维杯”大学生数学建模挑战赛(B题)深度剖析|建模完整过程+详细思路+代码全解析

问题1 首先&#xff0c;我们需要建立一个数学模型来计算热解产率&#xff0c;该模型为&#xff1a; Y m p m 0 100 % Y \frac{m_p}{m_0} \times 100\% Ym0​mp​​100% 其中&#xff0c; Y Y Y为热解产率&#xff0c;单位为 % \% %&#xff1b; m p m_p mp​为产物的质量&…

03.Linux文件操作

1.操作系统与Linux io框架 1.1 io与操作系统 1.1.1 io概念 io 描述的是硬件设备之间的数据交互&#xff0c;分为输⼊ (input) 与输出 (output)。 输⼊&#xff1a;应⽤程序从其他设备获取数据 (read) 暂存到内存设备中&#xff1b;输出&#xff1a;应⽤程序将内存暂存的数据…

【顺序程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 完整资料如下&#xff1a;纯干货、纯干货、纯干货&#xff01;&#xff01;…

C语言的打字小游戏

目录 游戏内容 伪代码 main 函数 随机字符串 匹配逻辑 用户决定是否继续或退出游戏 完整代码 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 提示&#xff1a;文章作者为初学者&#xf…

数据结构(链表)

文章目录 1.单链表1.基本介绍1.定义2.逻辑结构 2.应用实例1.需求分析2.思路分析3.完成添加和显示链表信息&#xff0c;直接添加到链表的尾部4.根据排名添加&#xff0c;如果排名重复则给出提示5.根据新节点的编号来修改信息6.删除指定id的节点 3.单链表面试题1.题目2.面试题一2…

docker安装部署FastGPT

一&#xff1a;FastGPT介绍 FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01; 官网地址&#xff1a;https://fastgpt.in/zh …