我的小部件上有一个标签,它的文本是数字 1。我想在用户向上或向下移动手指时更改数字(向上 = 数字 1++ 和向下 = 数字 1--)。这是我的代码,但标签的文本没有改变,但在控制台中我看到值已更改!!!还有最好的方法是什么?(获取触摸事件并知道用户手指在触摸屏上的位置)
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qApp->installEventFilter(this);
// grabGesture(Qt::SwipeGesture);
QGraphicsView graphicsView;
graphicsView.setDragMode(QGraphicsView::ScrollHandDrag);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::event(QEvent *event){
qDebug()<<"event type"<<event->type();
if(event->type() ==129 /*|| event->type() ==2 || event->type() ==5 */)
{
QMouseEvent *ms=static_cast<QMouseEvent*>(event);
QPoint p=ms->pos();
// qDebug()<<"point y"<<p.y()<<" and label . y "<<ui->label->y();
// qDebug()<<"point x"<<p.x()<<" and label . x "<<ui->label->x();
if(p.y()>ui->label->y())
{
goUpperLabel();qDebug()<<"up?";
}
else{
goButtomLabel();
qDebug()<<"down?";
}
}
}
void MainWindow::goButtomLabel(){
int a=ui->label->text().toInt();
qDebug()<<"----down-----"<<a;
a-=1; qDebug()<<"----down-----"<<a;
ui->label->setText(QString::number(a));
}
void MainWindow::goUpperLabel(){
int a=ui->label->text().toInt();
qDebug()<<"-------up--------"<<a;
a+=1;qDebug()<<"-------up--------"<<a;
// ui->label->setText(QString::number(a));
ui->label->setText("QString::number(a)");
}
这是我在控制台中的输出打印:
[root@FriendlyARM /FGIT]# ./ges1 -qws
Using multi-touch device: /dev/input/event1 (13)
event type 109
event type 68
event type 68
event type 68
event type 68
event type 33
event type 203
event type 75
event type 69
event type 69
event type 69
event type 69
event type 69
event type 70
event type 70
event type 70
event type 70
event type 70
event type 13
event type 14
event type 153
event type 153
event type 153
event type 17
event type 26
event type 67
event type 74
event type 76
event type 77
event type 24
event type 99
event type 8
event type 12
event type 76
////////// in here I touch the touch in top up of label>>>>>
event type 10
event type 127
event type 129
----up----- 1
----up----- 2
up?
event type 2
event type 77
event type 3
最佳答案
可能出了什么问题:
if(event->type() ==129)
其中 129 等同于 QEvent::HoverMove
应该尝试使用
if(event->type() ==QEvent::MouseMove)
此外,您应该在事件函数中返回一些内容。
true 表示事件被处理 false 否则。
在您的例子中,return true
在 If 条件中,您正在处理您的事件。
返回 QMainWindow::event(event);
否则。
关于c++ - 在C++中,当手指在触摸屏上移动时如何更改标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067763/