bas*_*his 5 c++ linux ubuntu qt touch
我正在尝试创建一个支持多点触控的Qt Widgets应用程序.我正在使用安装了Ubuntu 14.04,QtCreator 3.5.0和Qt 5.5.0的平板电脑.我正在平板电脑上直接编译.
我尝试编译一些像这样的Qt Quick和Qt Widgets示例,这个和这个.所有这些都编译得很好,所有这些都支持鼠标和单点触摸事件,但没有一个支持多点触控.
我尝试修改最后一个例子的源代码,如下所示:
bool ImageWidget::event(QEvent *event)
{
std::cout << GetEvent(event).toStdString() << std::endl;
if (event->type() == QEvent::Gesture)
return gestureEvent(static_cast<QGestureEvent*>(event));
return QWidget::event(event);
}
QString ImageWidget::GetEvent(const QEvent * ev) {
static int eventEnumIndex = QEvent::staticMetaObject
.indexOfEnumerator("Type");
QString result;
result.append("QEvent");
if (ev) {
QString name = QEvent::staticMetaObject
.enumerator(eventEnumIndex).valueToKey(ev->type());
if (!name.isEmpty()) result.append(name); else result.append(ev->type());
} else {
result.append( "foo");
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试触摸拖动项目时获得的所有输出都是一些鼠标事件:
QEventMouseButtonPress
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseButtonRelease
QEventLeave
Run Code Online (Sandbox Code Playgroud)
其他应用程序(如谷歌Chrome或Ubuntu本身)处理多点触控,所以我猜它与Qt有关.
XInput说明了当前安装的版本:
xinput version 1.6.1
XI version on server: 2.3
Run Code Online (Sandbox Code Playgroud)
我对Qt和Ubuntu一般都比较新,所以问题实际上可能非常简单,但谷歌搜索没有给我任何结果.感谢您的帮助.
UPDATE
此外,如果有人在Ubuntu或其他基于Linux的发行版上分享使用触摸Qt的经验,我会很感激,这样我就可以弄清楚它是否是操作系统中的错误或与硬件有关.
小智 0
要在单个小部件上实现多点触摸,我们需要不同的事件,而不是 QEventMouseButtonPress 等。有新的事件类型,如 TouchBegin 、 TouchUpdate 、 TouchEnd 和新的 TouchEventsClass 。
为了更好地理解,请点击链接http://www.slideshare.net/qtbynokia/using-multitouch-and-gestures-with-qt
| 归档时间: |
|
| 查看次数: |
1624 次 |
| 最近记录: |