Я использую MouseArea для кнопок в своем приложении QT и должен знать, когда пользователь пальцем нажимает на кнопку. На W7 с помощью мыши я получаю эту информацию с помощью OnEntered from MouseArea.Как получить сигнал Qt, введенный() в MouseArea от Touch?
Проблема: на целевой платформе с сенсорным экраном введенный сигнал активируется, когда я нажимаю MouseArea (сначала коснитесь внутри MouseArea), затем вытащите палец (выведенный сигнал), затем переместите палец назад в (введенный сигнал). Но когда первое касание находится за пределами области, и я вхожу в него, входной сигнал не запускается. Я также пробовал MultiPointTouchArea с onTouchUpdated и onUpdated, такое же поведение.
Я использую Qt 5.5.1 на встроенном Linux.
Есть ли что-то, что я могу сделать, чтобы MouseArea всегда запускал введенный сигнал? Или я должен использовать что-то другое, кроме MouseArea или MultiPointTouchArea?
В качестве обходного решения я мог бы подумать о MouseArea в полном окне с информацией о том, где находятся все кнопки, и проверять каждую позицию, если была введена кнопка, но я уверен, что должно быть лучшее решение.
Редактирование: при использовании мыши на целевой платформе введенный сигнал запускается при перемещении мыши в область.
Это моя (упрощенный) код:
main.cpp
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QtQml>
#include "uart_terminal.h"
int main(int argc, char *argv[])
{
system("mount /dev/mmcblk0p1 /mnt/sdcard/");
setenv("QT_QPA_EGLFS_PHYSICAL_WIDTH", "376", 1);
setenv("QT_QPA_EGLFS_PHYSICAL_HEIGHT", "301", 1);
QApplication app(argc, argv);
qmlRegisterType<UART_terminal>("com.uart", 1, 0, "UARTTerminal");
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("applicationDirPath", QGuiApplication::applicationDirPath());
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
main.qml:
Window
{
id: rootWindow
visible: true
width: 1280
height: 1024
Rectangle
{
id: test
color: "red"
width: 300
height: 300
MouseArea
{
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.AllButtons
onEntered:
{
console.log("entered")
test.color = "blue"
}
onExited: test.color = "red"
onCanceled: console.log("canceled")
onPositionChanged:
{
console.log("pos changed, containsMouse", containsMouse)
}
}
/*MultiPointTouchArea
{
anchors.fill: parent
onTouchUpdated: console.log("touch updated")
onUpdated: console.log("touchlist updated")
}*/
}
}