Qt学习笔记(Day 3)

1        自定义控件

        1.1  添加新文件  Qt-设计师界面类  (.h  .cpp  .ui)

        1.2  .ui 中  设计  QSpinBox  和  QSlider  两个控件

        1.3  Widget 中使用自定义控件,拖拽一个 Widget,点击提升为,点击添加,点击提升

        1.4  实现功能,改变数字,滑动条跟着移动,信号槽监听

        1.5  提供 getNum  和  retNum  函数接口

2        Qt 中的事件

        2.1  鼠标事件

                2.1.1  鼠标进入事件  enterEvent

                2.1.2  鼠标离开事件  leaveEvent

                2.1.3  鼠标按下  mousePressEvent(QMouseEvent *ev)

                2.1.4  鼠标释放  mouseReleaseEvent(QMouseEvent *ev)

                2.1.5  鼠标移动  mouseMoveEvent(QMouseEvent *ev)

                2.1.6  ev->x() x坐标  ev->y()  y坐标

                2.1.7  ev->button()  可以判断所有按键  Qt::LeftButton        Qt::RightButton

                2.1.8  ev->buttons()  判断组合按键  判断 move 时候的左右键  结合 &(位与) 操作符

                2.1.9  格式化字符串  QString("%1 %2").arg(1).arg(2);

        2.2  定时器1

                2.2.1  利用事件  void timerEvent( QTimerEvent * ev )

                2.2.2  启动定时器  startTimer(1000)  单位:毫秒

                2.2.3  timerEvent  的返回值是定时器的表一标识,可以和 ev->timerId() 作比较

        2.3  定时器2

                2.3.1  利用定时器类  QTimer

                2.3.2  创建定时器对象  QTimer * timer  = new QTimer(this);

                2.3.3  启动定时器  timer->start(毫秒);

                2.3.4  每隔一定毫秒,发送信号  timerout  ,进行监听

                2.3.5  暂停  timer->stop();

        2.4  event 事件

                2.4.1  用途:用于事件的分发;

                2.4.2  也可以做拦截操作,但是不建议

                2.4.3  bool event( QEvent * e );

                2.4.4  返回值,如果是 true 代表用户处理这个事件,不向下分发了

                2.4.5  e->type() == 鼠标事件

        2.5  事件过滤器

                2.5.1  在程序将事件分发到事件分发器前,可以利用过滤器做拦截

                2.5.2  步骤:

                        1、给空间安装事件过滤器

                        2、重写 eventFilter(QObject * obj, QEvent * e);

3        绘图

        3.1  绘图事件  void paintEvent() 重写这个事件

        3.2  实例化一个画家对象:QPainter painter(this);        this:指定画图的设备,即(窗口)

        3.3  画线、画圆、画矩形、画文字、

        3.4  设置画笔 QPen 设置画笔宽度、风格

        3.5  设置画刷(即填充) QBrush  设置画刷风格

4        QPainter 高级设置

        4.1  抗锯齿 效率低

                painter.setRenderHint(QPainter::Antialiasing);

        4.2  画家进行移动

                painter.translate(100, 0);

        4.3  保存画家状态

                painter.save();

        4.4  还原画家状态

                painter.restore();

        4.5  如果像手动调用绘图事件,利用 update()

                利用画家画图片: painter.drawPixmap(posX, 0, QPixmap(":/images/lufei.jpg"));

4        QPaintDevice

        4.1  QPixmap QImage QBitmap(黑白色)  QPicture  QWidget

        4.2  QPIxmap 对不同的平台做了显示的优化

                4.2.1  QPixmap pix( 300, 300 );

                4.2.2  pix.fill( Qt::blue ) 填充颜色

                4.2.3  利用画家往 pix 上画画  QPainter painter(&pix)

                4.2.4  保存 pix.save( "路径" )

        4.3  QImage 可以对像素进行访问

                4.3.1  使用和 QPixmap 差不多, QImage img(300, 300, QImage::Format_RGB32 );

                4.3.2  其他流程和 QPixmap 一样

                4.3.3 可以对像素进行修改 img.setPixel(i, j, value);

        4.4  QPicture 记录和重现 绘图指令

                4.4.1  QPicture pic;

                4.4.2  painter.begin( &pic );

                4.4.3  painter.end( &pic );

                4.4.4  pic.save( 任意后缀名 );

                4.4.5  重现 利用画家可以重现 painter.drawPicture( 0, 0, pic );

                

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值