我要在一个在按钮的界面上实现触摸功能。界面上添加的一button.
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_AcceptTouchEvents,true);
}
void MainWindow::on_pushButton_clicked()
{
ui->label->setText("12323");
}
bool MainWindow::event(QEvent *e)
{
switch (e->type()) {
case QEvent::TouchBegin:
ui->label->setText("qqq");
e->accept();
break;
case QEvent::TouchUpdate:
ui->label->setText("aaaa");
e->accept();
break;
case QEvent::TouchEnd:
ui->label->setText("zzzz");
e->accept();
break;
default:
//e->accept();
break;
}
return QMainWindow::event(e);
}
这样的写法button正常,但是永远不会触发TouchUpdate,TouchEnd;如果这样写
case QEvent::TouchBegin:
ui->label->setText("qqq");
e->accept();
retrun true;
那么界面上的button将不能点击。
这样就造成了滑动翻页。放大缩小都做不了。我在qt5.2还是好的,qt5.4就不行了。不知有没有什么地方设置错了
------解决思路----------------------
区分button的位置和widget内非button的区域,如果触点落在button所在区域,你就不要处理它;如果没落在button上,你就处理并return true。