在Qt中,可以通过重载QWidget的touchEvent()
函数来实现判断手指应用是否点击了按钮。
以下是一个示例代码:
class MyButton : public QPushButton
{
public:
MyButton(QWidget *parent = nullptr) : QPushButton(parent)
{
// 设置按钮可以接受触摸事件
setAttribute(Qt::WA_AcceptTouchEvents);
}
protected:
bool event(QEvent *event) override
{
if (event->type() == QEvent::TouchBegin)
{
qDebug() << "Touch begin";
// 在此处可以执行按下后的操作
}
else if (event->type() == QEvent::TouchEnd)
{
qDebug() << "Touch end";
// 在此处可以执行释放后的操作
}
return QWidget::event(event);
}
};
上述代码定义了一个名为MyButton的QPushButton子类,并重载了它的event()
函数。在该函数中,我们根据事件类型(TouchBegin或TouchEnd)来执行相应的操作,并打印出相应信息。需要注意,在该函数中需要调用父类的event()
函数以确保其他事件得到正确处理。
使用该按钮时,只需要将其添加到窗口中即可。例如:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget widget;
QVBoxLayout layout(&widget);
MyButton button("Click me");
layout.addWidget(&button);
widget.show();
return app.exec();
}
这个示例代码中,我们创建了一个名为MyButton的按钮,并将其添加到垂直布局中。然后将该布局添加到QWidget窗口上,并显示出来。