linux创建自定义组件qt,linux下Qt C++5.11自定义控件操作步骤----以自定义Label为例...

上机环境linux mint Qt5.11

需求:自定义一个label,使得label在点击时可以显示鼠标的坐标值

步骤一,新建一个QWidget项目

7de2fa2d4922c84ddd76923131110c37.png

方便起见,设置如下

4ba0082391898f6c3ea0041b4d60dfb9.png

步骤二,新建一个Label类

自定义的控件,无非是在Qt官方控件的基础上添加新的槽(通俗点就是响应事件的函数),那么必定要继承基类,那么基类的具体名称是什么?如何查找?我们不妨拖拽一个官方控件,以查看它的相关属性

aedf6d9b38478406fd35aee4ed3a84d2.png

再一看,右边属性信息

36bf48746bcc1bb11924e9c7a90832de.png

为项目新添加一个C++类我暂且定义为mylabel,让这一标签继承基类QLabel,根据需求,点击标签将会显示鼠标,x,y轴坐标信息,这势必关系到选择哪些合适的微件(widget,说白了就是新时代优雅的控件)响应事件,具体做法是,把鼠标放在控件名,如QLabel处,按下F1

740f1ac036747b136683bb9127e6651c.png

查看Reimplemented protected functions

e7cbdd591d0dab57a215e0bef24b572a.png

感觉mousePressEvent甚得朕心,于是乎,在头文件加上相关函数声明(protected部分)

#ifndef MYLABEL_H#define MYLABEL_H#include#include

class mylabel : publicQLabel

{

Q_OBJECTpublic:explicit mylabel(QWidget *parent =nullptr);protected:void mousePressEvent(QMouseEvent *ev);void mouseReleaseEvent(QMouseEvent *ev);void mouseMoveEvent(QMouseEvent *ev);

signals:publicslots:

};#endif //MYLABEL_H

接下来,要写下详尽的功能,切换到类的实现文件mylabel.cpp

#include "mylabel.h"#include#include//必须添加控件头文件,否则程序会让你好看

#include//必须添加控件头文件,否则程序会让你好看

mylabel::mylabel(QWidget *parent) : QLabel(parent)

{

}void mylabel::mousePressEvent(QMouseEvent *ev)

{int x=ev->x();//把鼠标放在QMouseEvent处,按下F1可以发现该类的公共函数x(),y()是用来获取x,y轴坐标的int y=ev->y();

QString str=QString("x轴坐标:%1, y轴坐标:%2").arg(x).arg(y);this->setText(str);

}void mylabel::mouseReleaseEvent(QMouseEvent *ev)

{

}void mylabel::mouseMoveEvent(QMouseEvent *ev)

{

}

以为这样就万事大吉了?......I‘m deeply sorry,点击ui文件

选中label微件,鼠标右键 点击promote to......

1ca7881ea14b273b31bd481b0d7d162f.png

在promoted class name处添加你写好的 类名----mylabel,添加成功后,下次打开,如上图所示

接下来就是选中label组件,然后右键选择promoted to 选择拟定义好的类mylabel,最后运行结果如下,你的label控件最好拖的跟窗体一样大,这样才由更好的测试体验

49f6671f5ebedc6443dac7d85de09dca.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值