Я изо всех сил пытаюсь заставить мультитач работать с парой QWidgets, которые я добавил в QGraphicsView. Я создал подкласс QWidget, в котором я установил QGraphicsScene и QGraphicsView. Это мой (тестовый) подкласс QWidget:
#include "qttest1.h"
#include <QtWidgets>
#include <QTouchEvent>
qttest1::qttest1(QWidget *parent)
: QWidget(parent)
{
setEnabled(true);
if(!QCoreApplication::testAttribute(Qt::AA_DontCreateNativeWidgetSiblings))
setAttribute(Qt::WA_NativeWindow);
setAttribute(Qt::WA_AcceptTouchEvents);
scene = new QGraphicsScene(this);
scene->setSceneRect(0, 0, 1920, 1080);
graphicsView = new QGraphicsView(scene, this);
graphicsView->setRenderHints(QPainter::Antialiasing);
graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
graphicsView->setAttribute(Qt::WA_AcceptTouchEvents);
graphicsView->viewport()->setAttribute(Qt::WA_AcceptTouchEvents);
QBoxLayout *layout = new QVBoxLayout;
layout->addWidget(graphicsView);
setLayout(layout);
}
qttest1::~qttest1() {}
void qttest1::showGraphics()
{
for(int i = 0; i < 10; i++)
{
Dial *dial = new QDial();
dial->move(i * 120 + 50, 200);
dial->resize(120, 120);
dial->setAttribute(Qt::WA_AcceptTouchEvents);
QGraphicsProxyWidget *proxy = scene->addWidget(dial);
proxy->setAcceptTouchEvents(true);
}
}
Это мой основной:
int main(int argc, char **argv)
{
QApplication app(argc, argv);
app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
QRect rect = app.desktop()->screenGeometry();
qttest1 test;
test.resize(rect.width(), rect.height());
test.showFullScreen();
test.showGraphics();
return app.exec();
}
Я знаю, что код некрасивый и, вероятно, немного утекает, но смысл в том, чтобы попытаться заставить работать мультитач.
Я могу видеть и использовать все виды виджетов, которые я добавляю в сцену, но как только я касаюсь циферблата, он поглощает все прикосновения, которые идут после первого. Что заставляет циферблат прыгать между несколькими положениями. Я хочу, чтобы каждый циферблат (или любой тип виджета) можно было использовать по отдельности и одновременно. Я использую QT 5.0.2, Windows 8 с монитором, поддерживающим до 10 касаний.