我正在尝试编写一个多点触控桌面应用程序.我有一个基于QML的应用程序,现在我尝试同时拖动多个QML元素.
我尝试使用MultiPointTouchArea,但这不起作用.所以我有2个元素.例如,2张图片,应该由两个不同的人同时拖动.
如果我定义包含MultiPointTouchArea和touchPoint每个图片链接一个的矩形,则第一个触摸事件移动第一个图片,第二个触摸事件移动第二个图片.
就像在这个示例代码中:
Rectangle {
width: 400; height: 400
MultiPointTouchArea {
anchors.fill: parent
touchPoints: [
TouchPoint { id: point1 },
TouchPoint { id: point2 }
]
}
Rectangle {
width: 30; height: 30
color: "green"
x: point1.x
y: point1.y
}
Rectangle {
width: 30; height: 30
color: "yellow"
x: point2.x
y: point2.y
}
}
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.如果他们同时被触摸和拖动,我希望他们移动,而不会互相干扰,也没有触摸事件的顺序.这可能在qml中吗?或者我必须编写C++函数代码?
我希望你理解我的问题.
我打算编写一个具有可移动listView控件的触摸屏应用程序.目前我的问题是,当我尝试滚动时内容比listView本身更长/更高,内容来自视图.

这是我目前的代码.我需要一个解决方案,只在列表视图中滚动,而不是溢出其边框.
ListModel {
id: listModle
ListElement {
name: "Bill Smith"
number: "555 3264"
}
ListElement {
name: "John Brown"
number: "555 8426"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
ListElement {
name: "Bill Smith"
number: "555 3264"
}
ListElement {
name: "John Brown"
number: "555 8426"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
}
Rectangle {
x: 100
y: 100
width: 180; height: 200
Component {
id: contactDelegate
Item {
width: 180; height: …Run Code Online (Sandbox Code Playgroud) 我想用qt 5.1将qml信号连接到qt插槽.我不能在这个版本的qt中使用DeclarativeView.我的qml元素是一个简单的矩形,onClicked事件启动信号.
Rectangle{
id:test
width: 200
height: 50
x: 10
y: 10
signal qmlSignal()
MouseArea {
hoverEnabled: false
anchors.fill: parent
onClicked: {
console.log("geklickt")
test.qmlSignal()
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个带有此标头的SignalslotlistView类:
class SignalslotlistView: public QObject{
Q_OBJECT
public slots:
void cppSlot(const QString &msg);
Run Code Online (Sandbox Code Playgroud)
};
和.cpp
void SignalslotlistView::cppSlot(const QString &msg) {
qDebug() << "Called the C++ slot with message:" << msg;}
Run Code Online (Sandbox Code Playgroud)
在MainWindow类中,我尝试设置连接:
view->setSource(QUrl::fromLocalFile("main.qml"));
QObject *object = (QObject *)view->rootObject();
QObject *rect = object->findChild<QObject*>("test");
SignalslotlistView myClass;
QObject::connect(rect, SIGNAL(qmlSignal()),
&myClass, SLOT(cppSlot()));
Run Code Online (Sandbox Code Playgroud)
视图来自QQuickView类型.
但什么都没发生.谢谢.