1.第一步,创建一个QWdiget、QMainWindow、QDialog(三选一),默认操作即可。
- 扔一个QLabel进去
2. 在工程文件中添加一个类继承自QLabel
注意:Q_OBJECT声明后,才可以使用信号与槽,还有事件
这里对双击事件进行重写
.h
#pragma once
#include <QLabel>
class MyQLabel : public QLabel
{
Q_OBJECT
public:
MyQLabel(QWidget *parent);
~MyQLabel();
signals:
void doubleClicked();
protected: //重写双击事件
virtual void mouseDoubleClickEvent(QMouseEvent* event) override;
};
.cpp
#include "MyQLabel.h"
MyQLabel::MyQLabel(QWidget *parent)
: QLabel(parent)
{}
MyQLabel::~MyQLabel()
{}
void MyQLabel::mouseDoubleClickEvent(QMouseEvent * event)
{
Q_UNUSED(event);
emit doubleClicked();
}
3.ui界面的QLabel提升为新写MyQLabel
4.QMainWindow添加槽函数
.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_mainWindows.h"
class mainWindows : public QMainWindow
{
Q_OBJECT
public:
mainWindows(QWidget *parent = nullptr);
~mainWindows();
private:
Ui::mainWindowsClass ui;
private slots:
void LabelDoubleClicked();
};
.cpp
#include "mainWindows.h"
mainWindows::mainWindows(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.label, SIGNAL(doubleClicked()), this,SLOT(LabelDoubleClicked()));
}
mainWindows::~mainWindows()
{}
void mainWindows::LabelDoubleClicked()
{
ui.label->setText(QString::fromLocal8Bit("QLabel支持DoubleClicked!"));
}
5.效果
- 初始界面
- 双击