QToolButon自身信号不具有双击事件,如果想要实现双击事件,需要重写QToolButton。
首先需要继承QToolButtton,利用鼠标双击事件void mouseDoubleClickEvent(QMouseEvent *event);进行实现
MyToolButton.h
#ifndef MyToolButton_H
#define MyToolButton_H
#include <QtWidgets/QWidget>
#include <QtGui/QMouseEvent>
#include <QtWidgets/QToolButton>
//带双击事件的QToolButoon
class MyToolButton : public QToolButton
{
Q_OBJECT
public:
explicit MyToolButton(QWidget * parent = 0);
~MyToolButton();
//实现QToolButton左键双击事件
virtual void mouseDoubleClickEvent(QMouseEvent *event);
signals:
//双击信号
void doubleClicked();
};
#endif //MyToolButton_H
MyToolButton.cpp
#include "MyToolButton.h"
MyToolButton::MyToolButton(QWidget * parent) : QToolButton(parent)
{
}
MyToolButton::~MyToolButton()
{
}
//实现QToolButton左键双击事件
void MyToolButton::mouseDoubleClickEvent(QMouseEvent *event)
{
/* 也可在此写双击想要实现的事件*/
//如果需要自定义控件,则发送左键双击信号
//如果双击事件则发送双击事件信号
if (event->button() == Qt::LeftButton)
{
emit doubleClicked();
}
}
继承重写后接口实现双击事件,在需要使用的文件中加上MyToolButton.h文件,连接信号槽事件接口。
//创建自定义QToolButton
MyToolButton * m_toolButoon = new MyToolButton;
//连接信号槽事件
connect(m_toolButoon, SIGNAL(doubleClicked()), this, SLOT(slotTableShow1()));