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;
}
相关推荐
mengzhi啊1 小时前
QTreeWidget的右键菜单,展开和折叠,或者其他操作
qt
不爱学习的小枫1 小时前
scala的集合
开发语言·scala
梦醒沉醉1 小时前
Scala的初步使用
开发语言·后端·scala
小白学大数据1 小时前
Fuel 爬虫:Scala 中的图片数据采集与分析
开发语言·爬虫·scala
十年编程老舅1 小时前
用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!
qt·计算机毕设·c++项目·qt项目·deepseek·计算机毕设项目
贩卖纯净水.1 小时前
《React 属性与状态江湖:从验证到表单受控的实战探险》
开发语言·前端·javascript·react.js
JouJz1 小时前
Java基础系列:深入解析反射机制与代理模式及避坑指南
java·开发语言·代理模式
march of Time1 小时前
go注册rpc接口
qt·rpc·golang
白羊不吃白菜2 小时前
PAT乙级(1101 B是A的多少倍)C语言解析
c语言·开发语言
一号言安2 小时前
牛客python蓝桥杯11-32(自用)
开发语言·python