标签:event round ons code 自定义控件 als col nullptr str
上机环境linux mint Qt5.11
自定义的控件,无非是在Qt官方控件的基础上添加新的槽(通俗点就是响应事件的函数),那么必定要继承基类,那么基类的具体名称是什么?如何查找?我们不妨拖拽一个官方控件,以查看它的相关属性
再一看,右边属性信息
查看Reimplemented protected functions
感觉mousePressEvent甚得朕心,于是乎,在头文件加上相关函数声明(protected部分)
#ifndef MYLABEL_H #define MYLABEL_H #include <QWidget> #include<QLabel> class mylabel : public QLabel { Q_OBJECT public: explicit mylabel(QWidget *parent = nullptr); protected: void mousePressEvent(QMouseEvent *ev); void mouseReleaseEvent(QMouseEvent *ev); void mouseMoveEvent(QMouseEvent *ev); signals: public slots: }; #endif // MYLABEL_H
#include "mylabel.h" #include<QLabel> #include<QMouseEvent>//必须添加控件头文件,否则程序会让你好看 #include<QString>//必须添加控件头文件,否则程序会让你好看 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......
在promoted class name处添加你写好的 类名----mylabel,添加成功后,下次打开,如上图所示
接下来就是选中label组件,然后右键选择promoted to 选择拟定义好的类mylabel,最后运行结果如下,你的label控件最好拖的跟窗体一样大,这样才由更好的测试体验
linux下Qt C++5.11自定义控件操作步骤----以自定义Label为例
标签:event round ons code 自定义控件 als col nullptr str
原文地址:https://www.cnblogs.com/saintdingspage/p/12155489.html