在C ++中,当手指在触摸屏上移动时如何更改标签文本
in c++,how to change label text when the finger move on touch screen?
我的小部件上有一个标签,它的文本是数字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 条件中,您正在处理事件。
return QMainWindow::event(event);
否则。
相关文章:
- 将对象移动到std::shared_ptr
- 何时在引用或唯一指针上使用移动语义
- 可以使用移动语义更改或改进此C++代码吗?
- 为什么 std::move 不将默认移动构造函数中的源变量更改为默认值?
- 如果您向前移动,如何更改屏幕,如果向后移动,如何看到较旧的东西?
- 如何在基于范围的 for 循环中更改(向前/向后移动)迭代器?
- 在OpenGL中,如何将鼠标跟随更改为鼠标单击,拖动并移动释放?
- 在C ++中,当手指在触摸屏上移动时如何更改标签文本
- Qt 移动光标不再更改选择边界
- 移动数组指针未更改开始的地址
- libstdc++已弃用;移动到libc++[-Wdeprecated],但是更改会产生编译错误
- 已 ::std::has_nothrow_default_constructor 已被移动/更改
- 制作贪吃蛇游戏。检测到移动后,我无法更改屏幕。C++
- C++11:执行移动操作以更改地址
- Arduino代码:移动位似乎将数据类型从int更改为long
- 平台独立性:它与将源代码从一个操作系统移动到另一个操作系统有何不同
- 如何知道在单独类中创建的 QGraphicsItem 是否已在场景中移动(更改其位置)?
- Q设置:移动/更改现有Q设置对象的范围/位置
- 如何在指定的注册表值更改时在ATL ActiveX控件中获取事件通知以用作windows移动ActiveX控件
- C++11编译器何时会使RVO和NRVO优于移动语义和常量引用绑定