QT按钮双击事件(自定义控件类/类的提升)

4 篇文章 0 订阅
4 篇文章 0 订阅

QT/MFC中对很多控件进行了封装,常用的消息/事件也都可以很方便地添加,但是有些控件类的消息或者属性,QT/MFC都默认没有提供重写方法,这时就只能定义某个控件的子类,并重写其响应消息/事件/属性,比如我们想定义一个按钮的双击事件,可以按照以下步骤执行:
定义一个按钮子类→重写按钮子类窗口的双击事件→在主窗口中使用此按钮子类;

(1) 定义一个按钮子类
在项目中添加一个QT类,因为不需要新的UI文件,这里选择Qt Class:

这里基类默认只有两种,我们选择QWidget,等文件创建成功再把基类改成QPushButton:

(2) 重写按钮子类窗口的双击事件
.h文件

#pragma once
#include <QWidget>
#include <QPushButton>
#include <QMouseEvent>

class MyButton : public QPushButton /*父类改成QPushButton*/
{
	Q_OBJECT

public:
	MyButton(QWidget *parent);
	~MyButton();

protected:
	void mouseDoubleClickEvent(QMouseEvent *ev); /*双击事件响应函数*/
};

.cpp文件

#include "MyButton.h"
#include <QMessageBox>
#include <QString>

MyButton::MyButton(QWidget *parent)
	: QPushButton(parent)
{
	this->setParent(parent);
	this->setText(QString::fromLocal8Bit("我是自定义按钮"));
	this->setFixedSize(QSize(100, 50));
}

MyButton::~MyButton()
{
}

void MyButton::mouseDoubleClickEvent(QMouseEvent * ev)
{
	if (ev->buttons() == Qt::LeftButton)
	{
		QMessageBox::information(NULL, "666", "double click", QMessageBox::Yes);
	}
}

(3)在主窗口中使用此按钮子类
在这里插入图片描述

运行结果如下,搞定!
在这里插入图片描述

/万能的分割线*/

顺带一提,QT的UI文件中有个类提升功能,可以很简单的把某个控件基类提升为我们的自定义控件类,而且省去一些设置的代码,步骤如下;

如图所示,在控件设置中选择"提升为…"

将自定义类添加到可提升列表,然后再点击提升(这里要注意,<头文件>这个框里一定要填写正确的自定义头文件,因为它默认填充的头文件全是小写字母,并且会自动补齐到ui头文件中,如果自动填充的头文件名与自定义头文件名不一致,就会报错):

有时候提升完毕,编译时会报错,如图,这是因为系统在ui头文件中添加自定义类头文件时把它当成了系统头文件,把包含方式改成自定义类就行了:

可以看到按钮提升为自定义控件类了,效果跟之前是一样的:

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt/C++是一种开发桌面应用程序的跨平台开发框架,它提供了丰富的工具和类库,能够方便快捷地编写自定义件源码。 首先,我们需要创建一个继承自QWidget或QFrame的类来实现自定义件。在这个类中,我们可以重载一些事件处理函数来实现件的特定功能,比如绘制事件函数paintEvent()、鼠标事件函数mousePressEvent()等等。通过这些函数,我们可以件的外观、响应用户输入等。 在实现自定义件的外观时,可以利用Qt提供的各种绘图工具和API。例如,可以使用QPainter类来绘制各种形状、图像、文字等,还可以使用QPen和QBrush类来设置绘制的样式和颜色。通过这些工具,我们可以实现各种个性化的外观效果,如圆角、渐变、阴影等。 对于自定义件的功能实现,可以根据需求使用Qt提供的各种功能模块。比如,使用QTimer类实现定时器功能,使用QMediaPlayer类实现音视频播放功能等等。此外,Qt还提供了一系列的信号和槽机制,可以方便地实现件之间的交互和通信。 在自定义件的使用方面,可以通过在其他QWidget中使用该件的对象的方式来使用它。将自定义件放入项目中,然后在界面中添加该件的实例对象,即可展示该件,并与其交互。也可以通过在UI界面设计软件中将该件拖拽到需要的位置上,然后使用信号槽机制来实现与其他件的交互。 总之,Qt/C++编写自定义件源码需要熟悉Qt的基本概念和API,并结合自身的需求来设计和实现件的外观和功能。通过合理的设计和编码,可以创建出各种各样的自定义件,丰富应用程序的界面和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值