在hi3516开发板上用qtwidget类实现触摸屏功能并且触摸按动按钮后触发点击事件给出示例代码.h.cpp文件
时间: 2024-09-23 11:11:41 浏览: 51
在Hi3516开发板上利用Qt框架和QWidget类实现触摸屏功能,并在触摸按动按钮后触发点击事件,需要遵循一些步骤并编写相应的`.h`和`.cpp`头文件。以下是一个简单的示例:
**touch_button_widget.h (头文件)**
```cpp
#ifndef TOUCH_BUTTON_WIDGET_H
#define TOUCH_BUTTON_WIDGET_H
#include <QObject>
#include <QWidget>
#include <QPushButton>
class TouchButtonWidget : public QWidget
{
Q_OBJECT
public:
explicit TouchButtonWidget(QWidget *parent = nullptr);
~TouchButtonWidget();
private slots:
void onButtonClicked();
signals:
void buttonClicked();
protected:
void mousePressEvent(QMouseEvent *event);
};
#endif // TOUCH_BUTTON_WIDGET_H
```
**touch_button_widget.cpp (源文件)**
```cpp
#include "touch_button_widget.h"
TouchButtonWidget::TouchButtonWidget(QWidget *parent)
: QWidget(parent)
{
QPushButton *button = new QPushButton("触摸我", this);
button->setGeometry(50, 50, 100, 50); // 设置按钮位置和大小
connect(button, &QPushButton::clicked, this, &TouchButtonWidget::onButtonClicked); // 连接信号槽
}
void TouchButtonWidget::onButtonClicked()
{
emit buttonClicked(); // 触发信号
qDebug() << "按钮被点击了!";
}
~TouchButtonWidget() {}
// 在mousePressEvent中处理触摸事件
void TouchButtonWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton && event->pos().x() >= 50 && event->pos().x() <= 150 && event->pos().y() >= 50 && event->pos().y() <= 100) {
onButtonClicked();
}
}
```
在这个例子中,我们创建了一个包含一个普通按钮的QWidget子类`TouchButtonWidget`。当用户触摸屏幕并在按钮区域内按下时,会触发`onButtonClicked`函数,同时发射一个`buttonClicked`信号。
阅读全文