Qt 的核心机制

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H
#include<stdio.h>
#include<iostream>
#include<QIcon>
#include <QPushButton>
#include<QLabel>
#include<QLineEdit>
#include<QMovie>
#include<QDebug>
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();



private:
    QPushButton *btn1;
    QPushButton *btn2;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QLabel *first;
    Ui::Widget *ui;
};
#endif // WIDGET_H




#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowIcon(QIcon("C:\\Users\\lenovo\\Desktop\\7.png"));
    this->setFixedSize(600,400);
     this->setWindowTitle("qq");
 //   this->setWindowFlag(Qt::FramelessWindowHint);
    this->move(500,400);
    QLabel *lab1 =new QLabel(this);
    lab1->resize(600,125);
    QMovie *moive=new QMovie("C:\\Users\\lenovo\\Desktop\\1.gif");
    lab1->setMovie(moive);
    moive->start();
    lab1->setScaledContents(true);
    QLabel *lab2 =new QLabel(this);
    lab2->resize(30,30);
    lab2->move(150,lab1->y()+lab1->height()+50);
    lab2->setPixmap(QPixmap("C:\\Users\\lenovo\\Desktop\\2.png"));
    lab2->setScaledContents(true);
     this->edit1=new QLineEdit(this);
     edit1->resize(300,30);
     edit1->move(lab2->x()+lab2->width(),lab2->y());
     edit1->clear();//清空内容
     edit1->setPlaceholderText("请输入QQ账号");

     QLabel *lab3 =new QLabel(this);
     lab3->resize(30,30);
     lab3->move(lab2->x(),lab2->y()+lab2->height()+10);
     lab3->setPixmap(QPixmap("C:\\Users\\lenovo\\Desktop\\6.png"));
     lab3->setScaledContents(true);

      this->edit2=new QLineEdit(this);
      edit2->resize(300,30);
      edit2->move(edit1->x(),edit1->y()+edit1->height()+10);
      edit2->clear();//清空内容
      edit2->setPlaceholderText("请输入QQ密码");
      edit2->setEchoMode(QLineEdit::Password);

      this->btn1=new QPushButton("登录",this);
      btn1->resize(330,45);
      btn1->move(lab2->x(),lab3->y()+lab3->height()+50);
    //  btn1->setStyleSheet("background-color:orange;border-radius:10;");
     // btn1->setIcon(QIcon("C:\\Users\\lenovo\\Desktop\\jo.jpg"));

      this->first =new QLabel(this);
      first->resize(300,200);
      first->move(150,100);
      first->setStyleSheet("background-color:gray");
      QLabel*two=new QLabel(first);
      two->resize(30,80);
      two->move(150,50);


      this->btn2=new QPushButton("确认",first);
      btn2->resize(150,40);
      btn2->move(80,150);
      this->first->hide();

      connect(this->btn1,&QPushButton::clicked,[&](){

          first->show();
          if(this->edit1->text()==this->edit2->text())
          {
              first->setText("          登陆成功");
          }
          else
          {
              first->setText("    账号或密码错误");
          }
      });
      connect(this->btn2,&QPushButton::clicked,[&](){
          if(this->edit1->text()==this->edit2->text())
          {
              close();
          }
          else
          {
              this->first->hide();
          }
      });

}

Widget::~Widget()
{
    delete ui;
}


智能指针
#include <iostream>

using namespace std;
template <typename T>
class unique_ptr
{
public:

    explicit unique_ptr(T* p):ptr(p){};
    ~unique_ptr() noexcept{

        cout<<"智能析构"<<endl;
    };
    T & operator*()const noexcept
    {
        return *ptr;
    }
    T * operator->()const noexcept
    {
        return ptr;
    }
    unique_ptr(const unique_ptr &) = delete; // 禁用拷贝构造函数
    unique_ptr& operator=(const unique_ptr &) = delete; // 禁用赋值函数
    unique_ptr& operator+=(const unique_ptr &&other) noexcept // 右值引用
    {
        this->ptr=other.ptr;
        return *this;
    }
    unique_ptr& operator+=(const unique_ptr &other) noexcept // 右值引用
    {
        this->ptr=other.ptr;
        return *this;
    }

private:
       T *ptr;
};
class A
{

public:
     string name;
    A(){cout<<"无参"<<endl;}
    A(string a):name(a){cout<<"有参"<<endl;}
    ~A(){cout<<"析构"<<endl;}
};
int main()
{
    A *p1=new A("占山");
    unique_ptr<A>up(p1);
    cout<<up->name<<endl;
    return 0;
}
相关推荐
夫琅禾费米线1 小时前
[有趣的JavaScript] 为什么typeof null返回 object
开发语言·前端·javascript
三掌柜6661 小时前
【腾讯云产品最佳实践】腾讯云CVM入门技术与实践:通过腾讯云快速构建云上应用
开发语言·腾讯云·perl
多来米19961 小时前
小白学多线程(持续更新中)
java·开发语言
小柯J桑_4 小时前
C++:探索AVL树旋转的奥秘
开发语言·c++·avl树
skaiuijing5 小时前
Sparrow系列拓展篇:消息队列和互斥锁等IPC机制的设计
c语言·开发语言·算法·操作系统·arm
雯0609~7 小时前
c#:winform调用bartender实现打印(学习整理笔记)
开发语言·c#
胜天半子_王二_王半仙8 小时前
c++源码阅读__smart_ptr__正文阅读
开发语言·c++·开源
沐泽Mu8 小时前
嵌入式学习-C嘎嘎-Day08
开发语言·c++·算法
Non importa8 小时前
汉诺塔(hanio)--C语言函数递归
c语言·开发语言·算法·学习方法