当前位置:   article > 正文

QT基础入门——Qt事件(五)_qt::leftbutton

qt::leftbutton

前言:

事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。

一、鼠标事件:

1.鼠标进入事件  enterEvent
2.鼠标离开事件  leaveEvent
3.鼠标按下   mousePressEvent ( QMouseEvent  ev)
4.鼠标释放   mouseReleaseEvent
5.鼠标移动   mouseMoveEvent
6.ev->x() x坐标  ev->y() y坐标
7.ev->button() 可以判断所有按键 Qt::LeftButton  Qt::RightButton
8.ev->buttons()判断组合按键  判断move时候的左右键  结合 & 操作符
9.格式化字符串  QString( “ %1  %2 ” ).arg( 111 ).arg(222)
10.设置鼠标追踪    setMouseTracking(true);

1.mylabel.h

  1. #ifndef MYLABEL_H
  2. #define MYLABEL_H
  3. #include <QLabel>
  4. class myLabel : public QLabel
  5. {
  6. public:
  7. explicit myLabel(QWidget *parent = nullptr);
  8. //鼠标进入事件
  9. void enterEvent(QEvent *event);
  10. //鼠标离开事件
  11. void leaveEvent(QEvent *);
  12. //鼠标按下
  13. virtual void mousePressEvent(QMouseEvent *ev);
  14. //鼠标释放
  15. virtual void mouseReleaseEvent (QMouseEvent *ev);
  16. //鼠标移动
  17. virtual void mouseNoveEvent (QMouseEvent *ev);
  18. signals:
  19. };
  20. #endif // MYLABEL_H

2.mylabel.cpp

  1. #include "mylabel.h"
  2. #include <QDebug>
  3. #include <QMouseEvent>
  4. myLabel::myLabel(QWidget *parent) : QLabel(parent)
  5. {
  6. //设置鼠标追踪状态
  7. setMouseTracking(true);
  8. }
  9. //鼠标进入事件
  10. void myLabel::enterEvent(QEvent *event)
  11. {
  12. qDebug() << "鼠标进入了";
  13. }
  14. //鼠标离开事件
  15. void myLabel::leaveEvent(QEvent *)
  16. {
  17. qDebug() << "鼠标离开了";
  18. }
  19. //鼠标按下
  20. void myLabel::mousePressEvent(QMouseEvent *ev)
  21. {
  22. //当鼠标左键按下 提示信息
  23. if(ev->button() == Qt::LeftButton)
  24. {
  25. QString str = QString("鼠标按下了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  26. qDebug() << str;
  27. }
  28. }
  29. //鼠标释放
  30. void myLabel::mouseReleaseEvent (QMouseEvent *ev)
  31. {
  32. if(ev->button() == Qt::LeftButton)
  33. {
  34. QString str = QString("鼠标释放了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  35. qDebug() << str;
  36. }
  37. }
  38. //鼠标移动
  39. void myLabel::mouseNoveEvent (QMouseEvent *ev)
  40. {
  41. if(ev->button() & Qt::LeftButton)
  42. {
  43. QString str = QString("鼠标移动了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  44. qDebug() << str;
  45. }
  46. }

3.mylabel.ui

4.运行效果 

 

二、定时器

1.第一种定时器:

利用事件 void  timerEvent ( QTimerEvent * ev)
启动定时器 startTimer( 1000) 毫秒单位
timerEvent 的返回值是定时器的唯一标识  可以和ev->timerId 做比较

(1)widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class Widget; }
  6. QT_END_NAMESPACE
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = nullptr);
  12. ~Widget();
  13. //重写定时器的事件
  14. void timerEvent(QTimerEvent *);
  15. int id1;//定时器1的唯一标识
  16. int id2;//定时器2的唯一标识
  17. private:
  18. Ui::Widget *ui;
  19. };
  20. #endif // WIDGET_H

(2)widget.cpp

  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. id1 = startTimer(1000);//参数1 间隔 单位 毫秒
  10. id2 = startTimer(2000);
  11. }
  12. //重写定时器的事件
  13. void Widget::timerEvent(QTimerEvent *ev)
  14. {
  15. //label1每隔1秒+1
  16. if(ev->timerId() == id1)
  17. {
  18. static int num = 1;
  19. ui->label_2->setText( QString::number(num++));
  20. }
  21. //label2每隔2秒+1
  22. if(ev->timerId() == id2)
  23. {
  24. static int num2 = 1;
  25. ui->label_3->setText( QString::number(num2++));
  26. }
  27. }
  28. Widget::~Widget()
  29. {
  30. delete ui;
  31. }

(3)widget.ui

 (4)运行效果

2.第二种定时器:

利用定时器类 QTimer
创建定时器对象 QTimer * timer = new QTimer(this)
启动定时器  timer->start(毫秒)
每隔一定毫秒,发送信号  timeout  ,进行监听
暂停  timer->stop

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QTimer>//定时器的类
  4. Widget::Widget(QWidget *parent)
  5. : QWidget(parent)
  6. , ui(new Ui::Widget)
  7. {
  8. ui->setupUi(this);
  9. //定时器的第二种方式
  10. QTimer *timer = new QTimer(this);
  11. //启动定时器
  12. timer->start(500);
  13. connect(timer,&QTimer::timeout,[=](){
  14. //label4每隔2秒+1
  15. static int num = 1;
  16. ui->label_4->setText(QString::number(num++));
  17. });
  18. //点击暂停按钮 实现停止定时器
  19. connect(ui->btn,&QPushButton::clicked,[=](){
  20. timer->stop();
  21. });
  22. }
  23. Widget::~Widget()
  24. {
  25. delete ui;
  26. }

三、event事件分发器与过滤器

1.事件分发器

事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。

如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。

用途:用于事件的分发
也可以做拦截操作,不建议
bool event( QEvent * e); 
返回值 如果是true 代表用户处理这个事件,不向下分发了
e->type() == 鼠标按下 

(1)mylabel.h

  1. #ifndef MYLABEL_H
  2. #define MYLABEL_H
  3. #include <QLabel>
  4. class myLabel : public QLabel
  5. {
  6. public:
  7. explicit myLabel(QWidget *parent = nullptr);
  8. //鼠标进入事件
  9. void enterEvent(QEvent *event);
  10. //鼠标离开事件
  11. void leaveEvent(QEvent *);
  12. //鼠标按下
  13. virtual void mousePressEvent(QMouseEvent *ev);
  14. //鼠标释放
  15. virtual void mouseReleaseEvent (QMouseEvent *ev);
  16. //鼠标移动
  17. virtual void mouseNoveEvent (QMouseEvent *ev);
  18. //通过event事件分发器 拦截 鼠标按下事件
  19. bool event(QEvent *e);
  20. signals:
  21. };
  22. #endif // MYLABEL_H

(2)mylabel.cpp

  1. #include "mylabel.h"
  2. #include <QDebug>
  3. #include <QMouseEvent>
  4. myLabel::myLabel(QWidget *parent) : QLabel(parent)
  5. {
  6. //设置鼠标追踪状态
  7. setMouseTracking(true);
  8. }
  9. //鼠标进入事件
  10. void myLabel::enterEvent(QEvent *event)
  11. {
  12. qDebug() << "鼠标进入了";
  13. }
  14. //鼠标离开事件
  15. void myLabel::leaveEvent(QEvent *)
  16. {
  17. qDebug() << "鼠标离开了";
  18. }
  19. //鼠标按下
  20. void myLabel::mousePressEvent(QMouseEvent *ev)
  21. {
  22. //当鼠标左键按下 提示信息
  23. if(ev->button() == Qt::LeftButton)
  24. {
  25. QString str = QString("鼠标按下了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  26. qDebug() << str;
  27. }
  28. }
  29. //鼠标释放
  30. void myLabel::mouseReleaseEvent (QMouseEvent *ev)
  31. {
  32. if(ev->button() == Qt::LeftButton)
  33. {
  34. QString str = QString("鼠标释放了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  35. qDebug() << str;
  36. }
  37. }
  38. //鼠标移动
  39. void myLabel::mouseNoveEvent (QMouseEvent *ev)
  40. {
  41. if(ev->button() & Qt::LeftButton)
  42. {
  43. QString str = QString("鼠标移动了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  44. qDebug() << str;
  45. }
  46. }
  47. bool myLabel::event(QEvent *e)
  48. {
  49. //如果是鼠标按下 在event事件分发中做拦截操作
  50. if(e->type() == QEvent::MouseButtonPress)
  51. {
  52. QMouseEvent * ev = static_cast<QMouseEvent *>(e);
  53. QString str = QString("Event函数中:鼠标按下了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  54. qDebug() << str;
  55. return true;//true代表用户自己处理这个事件,不向下分发
  56. }
  57. //其他事件 交给父类处理 默认处理
  58. return QLabel::event(e);
  59. }

 (3)运行效果

2.事件过滤器

我们已经知道,Qt 创建了QEvent事件对象之后,会调用QObject的event()函数处理事件的分发。显然,我们可以在event()函数中实现拦截的操作。由于event()函数是 protected 的,因此,需要继承已有类。如果组件很多,就需要重写很多个event()函数。这当然相当麻烦,更不用说重写event()函数还得小心一堆问题。好在 Qt 提供了另外一种机制来达到这一目的:事件过滤器。

在程序将时间分发到事件分发器前,可以利用过滤器做拦截
 步骤
          1、给控件安装事件过滤器
          2、重写 eventFilter函数 (obj , ev)

(1)widget.h

  1. #ifndef MYLABEL_H
  2. #define MYLABEL_H
  3. #include <QLabel>
  4. class myLabel : public QLabel
  5. {
  6. public:
  7. explicit myLabel(QWidget *parent = nullptr);
  8. //鼠标进入事件
  9. void enterEvent(QEvent *event);
  10. //鼠标离开事件
  11. void leaveEvent(QEvent *);
  12. //鼠标按下
  13. virtual void mousePressEvent(QMouseEvent *ev);
  14. //鼠标释放
  15. virtual void mouseReleaseEvent (QMouseEvent *ev);
  16. //鼠标移动
  17. virtual void mouseNoveEvent (QMouseEvent *ev);
  18. //通过event事件分发器 拦截 鼠标按下事件
  19. bool event(QEvent *e);
  20. signals:
  21. };
  22. #endif // MYLABEL_H

(2)widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QTimer>//定时器的类
  4. #include <QMouseEvent>
  5. #include <QDebug>
  6. Widget::Widget(QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::Widget)
  9. {
  10. ui->setupUi(this);
  11. //给label 安装事件过滤器
  12. //步骤1 安装事件过滤器
  13. ui->label->installEventFilter(this);
  14. }
  15. //步骤2 重写 enentfilter事件
  16. bool Widget::eventFilter (QObject * obj,QEvent * e)
  17. {
  18. if(obj == ui->label)
  19. {
  20. if(e->type() == QEvent::MouseButtonPress)
  21. {
  22. QMouseEvent * ev = static_cast<QMouseEvent *>(e);
  23. QString str = QString("事件过滤器中:鼠标按下了 x=%1 y=%2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
  24. qDebug() << str;
  25. return true;//true代表用户自己处理这个事件,不向下分发
  26. }
  27. }
  28. //其他默认处理
  29. return QWidget::eventFilter(obj,e);
  30. }
  31. Widget::~Widget()
  32. {
  33. delete ui;
  34. }

 (3)运行效果 

四、绘图事件

Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。

QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。QPaintEngine类应用于QPainter和QPaintDevice之间,通常对开发人员是透明的。

下图给出了这三个类之间的层次结构:

 Qt 的绘图系统实际上是,使用QPainter在QPainterDevice上进行绘制,它们之间使用QPaintEngine进行通讯(也就是翻译QPainter的指令)。

1.QPainter 绘图

(1) 绘图事件  void paintEvent()
(2) 声明一个画家对象  QPainter  painter(this)  this指定绘图设备
(3) 画线、画圆、画矩形、画文字
(4) 设置画笔 QPen  设置画笔宽度 、风格
(5) 设置画刷 QBrush 设置画刷风格

(1)widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class Widget; }
  6. QT_END_NAMESPACE
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = nullptr);
  12. ~Widget();
  13. //绘图事件
  14. void paintEvent(QPaintEvent *);
  15. private:
  16. Ui::Widget *ui;
  17. };
  18. #endif // WIDGET_H

(2)widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter> //画家类
  4. #include <QDebug>
  5. Widget::Widget(QWidget *parent)
  6. : QWidget(parent)
  7. , ui(new Ui::Widget)
  8. {
  9. ui->setupUi(this);
  10. }
  11. //绘图事件
  12. void Widget::paintEvent(QPaintEvent *)
  13. {
  14. //实例化画家对象 this指定的是绘画设备
  15. QPainter painter(this);
  16. //设置画笔
  17. QPen pen(QColor(255,0,0));
  18. //设置画笔宽度
  19. pen.setWidth(5);
  20. //设置画笔风格
  21. pen.setStyle(Qt::DotLine);
  22. //设置画家,使用这个笔
  23. painter.setPen(pen);
  24. //设置画刷
  25. QBrush brush(Qt::blue);
  26. //设置画刷风格
  27. brush.setStyle(Qt::Dense7Pattern);
  28. //让画家使用画刷
  29. painter.setBrush(brush);
  30. //画线
  31. painter.drawLine(QPoint(0,0),QPoint(100,100));
  32. //画圆
  33. painter.drawEllipse(QPoint(100,100),50,50);
  34. //画矩形
  35. painter.drawRect(QRect(20,20,50,50));
  36. //画文字
  37. painter.drawText(QRect(10,200,150,50),"你好呀QT");
  38. }
  39. Widget::~Widget()
  40. {
  41. delete ui;
  42. }

 (3)运行效果 


2.QPainter高级设置

(1).抗锯齿效率低
       painter.setRenderHint(QPainter::Antialiasing);
(2).对画家进行移动
      painter.translate(100,0);
      保存状态 save
      还原状态 restore
(3).如果想手动调用绘图事件 利用update
(4).利用画家画图片 painter.drawPixmap( x,y,QPixmap(  路飞) )

(1)widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class Widget; }
  6. QT_END_NAMESPACE
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = nullptr);
  12. ~Widget();
  13. //绘图事件
  14. void paintEvent(QPaintEvent *);
  15. int posX = 0;
  16. private:
  17. Ui::Widget *ui;
  18. };
  19. #endif // WIDGET_H

(2)widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter> //画家类
  4. #include <QDebug>
  5. #include <QPushButton>
  6. Widget::Widget(QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::Widget)
  9. {
  10. ui->setupUi(this);
  11. //点击移动按钮 移动图片
  12. connect(ui->toolButton,&QPushButton::clicked,[=](){
  13. posX+=20;
  14. //如果想手动调用绘图事件 利用update
  15. update();
  16. });
  17. }
  18. //绘图事件
  19. void Widget::paintEvent(QPaintEvent *)
  20. {
  21. //高级设置
  22. QPainter painter(this);
  23. //画圆
  24. painter.drawEllipse(QPoint(300,50),50,50);
  25. //设置抗锯齿能力 效率较低
  26. painter.setRenderHint(QPainter::Antialiasing);
  27. painter.drawEllipse(QPoint(400,50),50,50);
  28. //画矩形
  29. painter.drawRect(QRect(20,20,50,50));
  30. //移动画家
  31. painter.translate(100,100);
  32. //保存画家状态
  33. painter.save();
  34. painter.drawRect(QRect(20,20,50,50));
  35. painter.translate(100,100);
  36. //还原画家保存状态
  37. painter.restore();
  38. painter.drawRect(QRect(20,20,50,50));
  39. //利用画家画资源图片
  40. //如果超出屏幕,再从0开始
  41. if(posX > this->width())
  42. {
  43. posX = 0;
  44. }
  45. painter.drawPixmap(posX,0,QPixmap(":/Image/Luffy.png"));
  46. }
  47. Widget::~Widget()
  48. {
  49. delete ui;
  50. }

(3)运行效果 

3. QPaintDevice绘图设备

   QPixmap QImage  QBitmap(黑白色) QPicture  QWidget
(1) QPixmap 对不同平台做了显示的优化
               QPixmap pix( 300,300)
               pix.fill( 填充颜色 )
               利用画家 往pix上画画  QPainter painter( & pix)
               保存  pix.save( “路径”)

(2) Qimage 可以对像素进行访问
              使用和QPixmap差不多 QImage img(300,300,QImage::Format_RGB32);
              其他流程和QPixmap一样
              可以对像素进行修改 img.setPixel(i,j,value);
(3) QPicture  记录和重现 绘图指令
              QPicture pic
              painter.begin(&pic);
              保存 pic.save( 任意后缀名 )
              重现 利用画家可以重现painter.drawPicture(0,0,pic);
 

(1)widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class Widget; }
  6. QT_END_NAMESPACE
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = nullptr);
  12. ~Widget();
  13. //绘图事件
  14. void paintEvent(QPaintEvent *);
  15. private:
  16. Ui::Widget *ui;
  17. };
  18. #endif // WIDGET_H

(2)widget.cpp

Pixmap绘图设备  专门未平台做了显示优化
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter>
  4. #include <QDebug>
  5. #include <QPixmap> //画家类
  6. #include <QImage>
  7. #include <QPicture>
  8. Widget::Widget(QWidget *parent)
  9. : QWidget(parent)
  10. , ui(new Ui::Widget)
  11. {
  12. ui->setupUi(this);
  13. //Pixmap绘图设备 专门未平台做了显示优化
  14. QPixmap pix(300,300);
  15. //填充颜色
  16. pix.fill(Qt::white);
  17. //声明画家
  18. QPainter painter(&pix);
  19. painter.setPen(QPen(Qt::green));
  20. painter.drawEllipse(QPoint(150,150),100,100);
  21. //保存
  22. pix.save("E:\\桌面文件\\pix.png");
  23. }
  24. //绘图事件
  25. void Widget::paintEvent(QPaintEvent *)
  26. {
  27. }
  28. Widget::~Widget()
  29. {
  30. delete ui;
  31. }

 

QImage 绘图设备  可以对像素进行访问

利用QImage 对象素进行修改
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter>
  4. #include <QDebug>
  5. #include <QPixmap> //画家类
  6. #include <QImage>
  7. #include <QPicture>
  8. Widget::Widget(QWidget *parent)
  9. : QWidget(parent)
  10. , ui(new Ui::Widget)
  11. {
  12. ui->setupUi(this);
  13. //QImage 绘图设备 可以对像素进行访问
  14. QImage img(300,300,QImage::Format_RGB32);
  15. img.fill(Qt::white);
  16. QPainter painter(&img);
  17. painter.setPen(QPen(Qt::blue));
  18. painter.drawEllipse(QPoint(150,150),100,100);
  19. //保存
  20. img.save("E:\\桌面文件\\pix.png");
  21. }
  22. //绘图事件
  23. void Widget::paintEvent(QPaintEvent *)
  24. {
  25. QPainter painter(this);
  26. //利用QImage 对象素进行修改
  27. QImage img;
  28. img.load(":/Image/Luffy.png");
  29. //修改像素点
  30. for(int i = 50;i < 100;i++)
  31. {
  32. for(int j = 50;j < 100;j++)
  33. {
  34. QRgb value = qRgb(255,0,0);
  35. img.setPixel(i,j,value);
  36. }
  37. }
  38. painter.drawImage(0,0,img);
  39. }
  40. Widget::~Widget()
  41. {
  42. delete ui;
  43. }

 

QPicture绘图设备 可以记录和重新绘图指令

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QPainter>
  4. #include <QDebug>
  5. #include <QPixmap> //画家类
  6. #include <QImage>
  7. #include <QPicture>
  8. Widget::Widget(QWidget *parent)
  9. : QWidget(parent)
  10. , ui(new Ui::Widget)
  11. {
  12. ui->setupUi(this);
  13. //QPicture绘图设备 可以记录和重新绘图指令
  14. QPicture pic;
  15. QPainter painter;
  16. painter.begin(&pic);//开始往pic上画
  17. painter.setPen(QPen(Qt::red));
  18. painter.drawEllipse(QPoint(150,150),100,100);
  19. painter.end();//结束画画
  20. //保存到磁盘
  21. pic.save("E:\\桌面文件\\pic.zt");
  22. }
  23. //绘图事件
  24. void Widget::paintEvent(QPaintEvent *)
  25. {
  26. QPainter painter(this);
  27. //重现QPicture绘图指令
  28. QPicture pic;
  29. pic.load("E:\\桌面文件\\pic.zt");
  30. painter.drawPicture(0,0,pic);
  31. }
  32. Widget::~Widget()
  33. {
  34. delete ui;
  35. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/949601
推荐阅读
相关标签
  

闽ICP备14008679号