linux创建自定义组件qt,关于QT自定义控件

Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。

用户自定义的控件可以通过继承现有的 Qt 控件实现,也可以直接从 QWidget 继承。QT中的label控件,没有预定义的单击信号。有时需要单击一个label控件来执行某些动作。如下图:

a9323baf245c9ffa8f5e7d335840eea3.png

要实现上图的效果,我们可以自定义自己的label控件,操作步骤如下:

1) 新建一个类,从现有的QLabel继承。

a57b7904a7bb14003b886b512b5c57ed.png

2) 在新类中,自定义一个单击信号,并重写mousePressEvent和mouseMoveEvent事件。代码示例如下:

class MyLabel : public QLabel

{

Q_OBJECT

public:

explicit MyLabel(QWidget *parent = 0);

protected:

void mousePressEvent ( QMouseEvent * ev );

void mouseMoveEvent ( QMouseEvent * ev );

signals:

void clicked();

};

MyLabel::MyLabel(QWidget *parent) :

QLabel(parent)

{

this->setMouseTracking(true);

}

void MyLabel::mousePressEvent ( QMouseEvent * ev )

{

this->setCursor(Qt::PointingHandCursor);

emit this->clicked();

}

void MyLabel::mouseMoveEvent ( QMouseEvent * ev )

{

this->setCursor(Qt::PointingHandCursor);

}

以上代码中,当鼠标按下时,发自定义信号,当鼠标经过label控件时,鼠标形状会有变化。关于如何使用自定义的控件,见下图:

acf894d56f210025fa53878bcaebbfe1.png

选中label. Promote to MyLabel.即可。并在构造函数中关联自定义控件的单击信号:

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

QObject::connect(ui->label, SIGNAL(clicked()),this, SLOT(fun()));

}

void MainWindow::fun()

{

QMessageBox::information(this, "dd", "clicked test");

}

dba8648d9813be51b22b5dd50c436494.png

点击注册,弹出消息框。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery三级下拉菜单

演示地址:http://www.corange.cn/demo/3738/index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"&g…

100个高质量Java开发者博客

ImportNew注&#xff1a;原文中还没有100个。作者希望大家一起来推荐高质量的Java开发博客&#xff0c;然后不段补充到这个列表。欢迎你也参与推荐优质的Java开发博客。&#xff08;声明一下&#xff1a;我们的数学不是体育老师教的&#xff01;:) &#xff09; 本文的主要目的…

IT外包概要

IT外包 前两天和朋友聊起这个外包的问题&#xff0c;就顺便给他说了一下&#xff0c;自己也整理了一下&#xff0c;发出来&#xff0c;方便更多的人。 如果有说的不准确的地方欢迎大家补充分享。 大致分两种&#xff1a; 项目外包&#xff0c;人力外包。简而言之&#xff1a;项…

linux gcc march arch,Gcc的spec中arch什么的指定

gcc/gcc.c中的set_collect_gcc_options这里面有COLLECT_GCC_OPTIONS-marcharmv4t -mtunearm920t(gdb) p switches[0]$15 {part1 0x80792b1 "marcharmv4t", args 0x0, live_cond 1,validated 1 \001, ordering 0 \000}(gdb) p switches[1]$16 {part1 0x80792c…

php如何解决中文乱码问题?

为什么会出现中文乱码&#xff1f; 很多新手朋友学习PHP的时候&#xff0c;发现程序中的中文在输出的时候会出现乱码的问题&#xff0c;那么为什么会出现这种乱码的情况呢&#xff1f;一般来说&#xff0c;乱码的出现有2种原因&#xff0c;一种是由于编码(charset) 设置错误&am…

红帽将召开“开放你的世界”在线论坛

国外媒体报道&#xff0c;美国时间5月27日&#xff0c;红帽公司将召开在线开源论坛&#xff0c;主题为“开放你的世界”。时间为美国东部时间8:45-17:30.该论坛讨论的议题包括opensource.com网站所覆盖的健康医疗、教 育、政府、法律等领域。论坛嘉宾包括这些领域的开源思考者及…

sed命令的使用和说明

sed的三种用法1.shell命令行输入命令 格式&#xff1a;sed [选项] ’sed命令‘ 输入文件2.将sed命令出入脚本文件后&#xff0c;sed命令调用格式&#xff1a; sed [选项] -f sed脚本文件 输入文件3.将sed命令插入脚本文件后&#xff0c;三种脚本文件可执行&#xff0c;直接执行…

linux pam模块 cron,Linux-PAM 1.1.2 中文文档 - 6.32. pam_tally-登录计数器(统计)模块 | Docs4dev...

pam_tally.so [file * 2 *] [onerr [* 3 * | * 4 *]] [magic_root] [even_deny_root_account] [deny * 5 *] [lock_time * 6 *] [unlock_time * 7 *] [per_user] [no_lock_time] [no_reset] [审核] [静音] [no_log_info]pam_tally [--file * 9 *] [--user * 10 *] [--rese…

Java提取文本文档中的所有网址(小案例介绍正则基础知识)

正则表达式基础以及Java中使用正则查找 定义&#xff1a; 正则表达式是一些用来匹配和处理文本的字符串 正则的基础&#xff08;先大致了解下&#xff09; 1. 正则表达式的作用 查找特定的信息&#xff08;搜索&#xff09;替换一些文本&#xff08;替换&#xff09;2. 正则基础…

计算机鼓轮

计算机鼓轮是一种计算机早期应用的机械式模数转换器转载于:https://www.cnblogs.com/emanlee/archive/2010/12/08/1900053.html

字符串大小写字母转换c 语言,towlower()

wint_t towlower ( wint_t wc );towlower() 函数用来将大写字母转换为小写字母(针对宽字符)。只有当参数 wc 是一个大写字母&#xff0c;并且存在对应的小写字母时&#xff0c;这种转换才会发生。towlower() 是 tolower() 的宽字符版本。参数wc要被转换的宽字符。它可以是一个有…

Windows与Linux之间海量文件的传输与Linux下大小写敏感问题

Windows与Linux之间海量文件的传输与Linux下大小写敏感问题 mount.cifs 支持通过网络文件系统挂载&#xff0c;不过需要安装cifs-utils&#xff0c;也可通过mount -t cifs挂载&#xff0c;详细的选项可参见man mount.cifs 1. 通过Windows共享文件夹 1.1 设置windows共享1.2 Lin…

Hashtable和HashMap的区别

HashTable的应用非常广泛&#xff0c;HashMap是新框架中用来代替HashTable的类&#xff0c;也就是说建议使用HashMap&#xff0c;不要使用HashTable。可能你觉得HashTable很好用&#xff0c;为什么不用呢&#xff1f;这里简单分析他们的区别。 1.HashTable的方法是同步的&#…

SQL解析之硬解析和软解析

当客户端进程&#xff0c;将SQL语句通过监听器发送到Oracle时, 会触发一个Server process生成&#xff0c;来对该客户进程服务。Server process得到SQL语句之后&#xff0c;对SQL语句进行Hash运算&#xff0c;然后根据Hash值到library cache中查找&#xff0c;如果存在&#xf…

ORA-00018: maximum number of sessions exceeded 超出最大会话数

ORA-00018: maximum number of sessions exceededORA-00018: 超出最大会话数 Cause: All session state objects are in use. 所有会话状态对象都在使用中。 Action: Increase the value of the SESSIONS initialization parameter. 增加会话初始化参数的…

对象关系映射(ORM)及代码生成器和插件C#源码(DBFrameworkV4.5.3)

1. ORM及代码生成器和插件C#源码(DBFrameworkV4.5.3) 一、使用对象关系映射组件Kenly.DBFramework.dll不用编写任何SQL或者存储过程即可实现下列功能&#xff1a;1、数据表、视图和存储过程与对象之间的转换。2、数据表、视图的自定义条件查询。3、数据表、视图的分页查询。4、…

念一城,安一世

时光飞快的流逝&#xff0c;岁月总是行行匆匆&#xff0c;随着迷茫的脚步渐行渐远&#xff0c;伴随着若有若无的孤单心事&#xff0c;猛然间离道阻挡在路中央&#xff0c;才诚惶诚恐的发现&#xff0c;留一份是匆忙&#xff0c;取一分就变成了离殇。在多愁中起步&#xff0c;在…

c语言如何读取mp3歌曲信息,VC中读取mp3文件信息的方法

标准格式的mp3文件中&#xff0c;都有一些自身描述的信息&#xff0c;比如歌曲名称、歌手、专辑名称等信息。这些信息都记录在mp3文件中&#xff0c;而且格式是固定的。那么&#xff0c;我们就可以用编程的方式来获取这些信息。其实说简单一点&#xff0c;就是VC文件读取的操作…

kvm虚拟机热迁移

1. 迁移介绍 迁移&#xff1a; 系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机&#xff0c;并且能够在目的主机上正常运行。在没有虚拟机的时代&#xff0c;物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态&#xff0c…

使用Backtrace函数打印调用栈 - Debug居家必备

glibc提供了backtrace这个库函数&#xff0c;可以用来打印call stack。比如我们可以在程序中注册常见的一些signal&#xff0c;比如SIGSEGMENT, SIGPIPE&#xff0c;然后在这些信号的回调函数中&#xff0c;利用backtrace打印出call stack&#xff0c;这样debug就非常的方便。 …