QT--day3

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.mfbz.cn/a/605715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美团二面:SpringBoot读取配置优先级顺序是什么?

引言 Spring Boot作为一种轻量级的Java应用程序框架&#xff0c;以其开箱即用、快速搭建新项目的特性赢得了广大开发者的青睐。其核心理念之一就是简化配置过程&#xff0c;使开发者能够快速响应复杂多变的生产环境需求。为了实现这一点&#xff0c;Spring Boot支持丰富的外部…

智慧旅游推动旅游服务智慧化转型:借助智能科技的力量,实现旅游资源的精准匹配和高效利用,为游客提供更加便捷、舒适的旅游环境

目录 一、引言 二、智慧旅游的定义与特点 &#xff08;一&#xff09;智慧旅游的定义 &#xff08;二&#xff09;智慧旅游的特点 三、智能科技在旅游服务中的应用 &#xff08;一&#xff09;大数据分析助力旅游决策 &#xff08;二&#xff09;人工智能实现个性化推荐…

【C++】map和set的基础详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前&#xff0c;我们先了解ChatGPT的基本概念&#xff0c;与OpenAI API提供的可用模型…

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能&#xff0c;帮助你了解应用程序的运行状况&#xff0c;以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…

WOA-SVM多变量分类预测|基于鲸鱼优化算法的支持向量机|Matalb

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

stm32f103zet6_RTC_1_介绍

RTC简介 实时时钟是一个独立的定时器。 RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可 提供时钟日历的功能。 修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域&#xff0c;即在系统复…

工采电子国产D类音频放大器iML6602可以替代TPA3118

iML6602是一款高集成度、高效率的双声道D类音频功率放大器&#xff1b;支持BTL和PBTL两种模式输出&#xff0c;供电电压范围4.5V ~ 26V&#xff1b;双通道BTL模式下输出功率 230W&#xff08;8Ω&#xff0c;24V&#xff0c;THDN0.1%&#xff09;单通道PBTL模式下可以输出60W&a…

Python中的函数定义(def)详解

Python中的函数定义&#xff08;def&#xff09;详解 在编程语言中&#xff0c;函数是组织代码的一种方式&#xff0c;它们可以帮助我们将复杂的程序拆分为简单、易管理的部分。在Python中&#xff0c;函数的定义使用def关键字。 什么是函数&#xff1f; 函数是一段完成特定…

虚拟串口调试(Windows)

在单片机和嵌入式设备开发过程中&#xff0c;我们有时需要对程序的串口进行调试&#xff0c;但是身边又恰好没有硬件设备&#xff0c;此时&#xff0c;我们可以通过虚拟串口来实现模拟本地端口&#xff0c;方便调试。 软件安装 VSPD虚拟串口工具 下载VSPD软件&#xff1a;百…

django和vue开发的前后端分离网站怎么部署到服务器上,django和vue前后端分离网站怎么通过宝塔部署

提示&#xff1a;如果看完全部教程后仍然部署不成功&#xff0c;可以联系作者 一、提前准备 想要把django vue 前后端分离网站部署到服务器上&#xff0c;有一些提前准备的东西 1、备案域名&#xff08;域名必须备案&#xff09; 这里需要解析两个域名&#xff0c;一个前端&…

【数据结构|C语言版】栈和队列

前言1. 栈1.1 栈的概念和性质1.2 顺序栈1.3 链栈1.4 共享栈 2. 队列2.1 队列的概念和性质2.2 循环队列2.3 链式队列2.4 双端队列 3. 例题精选3.1 有效的括号3.2 用队列实现栈2.4 用栈实现队列3.4 设计循环队列3.5 参考答案 结语 #include<GUIQU.h> int main { 上期回顾: …

浏览器控制台console常用命令小结

chrome调试工具的Console对象相信很多人使用过&#xff0c;熟练的Web开发人员会经常使用 console.log() 在其代码中打印消息和调试问题&#xff0c;实际上还有很多很有用的功能和技巧&#xff0c;善用之可以极大提高Web开发&#xff0c;网站调优的效率&#xff01; 这里我们总结…

Ansible---Playbook剧本

文章目录 Playbook案例1 Playbook剧本基本用法案例2 Playbook剧本定义、引用变量案例3.when条件判断迭代剧本Roles 模块 Playbook Tasks&#xff1a;任务是 Playbooks 的核心&#xff0c;它们是 Playbook 中的一项指令&#xff0c;告诉 Ansible 在远程主机上执行什么操作。每个…

kubectl_进阶_安全

安全 在前面的学习中&#xff0c;我们知道对于资源对象的操作都是通过 APIServer 进行的&#xff0c;那么集群是怎样知道我们的请求就是合法的请求呢&#xff1f; 这就涉及到k8s的安全相关的知识了。 1. API对象 Kubernetes有一个很基本的特性就是它的所有资源对象都是模型…

pdf2htmlEX:pdf 转 html,医学指南精细化处理第一步

pdf2htmlEX&#xff1a;pdf 转 html&#xff0c;医学指南精细化处理第一步 单文件转换多文件转换 代码&#xff1a;https://github.com/coolwanglu/pdf2htmlEX 拉取pdf2htmlEX 的 Docker&#xff1a; docker pull bwits/pdf2htmlex # 拉取 bwits/pdf2htmlex不用进入容器&…

统信UOS 1070桌面操作系统如何备份及恢复全盘数据

原文链接&#xff1a;统信UOS 1070桌面操作系统如何备份及恢复全盘数据 Hello&#xff0c;大家好啊&#xff01;数据备份和还原对于保护我们的重要信息至关重要&#xff0c;尤其是当系统遭遇意外时&#xff0c;能够快速恢复到正常状态。今天&#xff0c;我将介绍如何在统信UOS …

树莓派配置双网卡分别为AD HOC和AP模式

树莓派配置双网卡分别为AD HOC和AP模式 需求说明&#xff1a;为了实现分级网络管理&#xff0c;将多个无人机分簇&#xff0c;簇间使用AD HOC进行无中心自组织的网络&#xff0c;簇内使用AP-AC模式进行中心化网络。因此&#xff0c;需要配置一台设备&#xff0c;同时完成AD HOC…

设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)

目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化…
最新文章