LINUX.ORG.RU

Как получить позицию курсора из plasma_engine_mouse

 , , ,


0

1

Скажите, как можно получить позицию курсора с помощью plasma_engine_mose? Я объявляю значится этот dataengine в коде на QML

PlasmaCore.DataSource {
        id: executeSource
        engine: "mouse"
        connectedSources: ["Position"]
        
    }
Дальше пытаюсь получить из него данные
 onClicked: {
                print(executeSource.sources)
               
            }
На что в консоле выдается два источника, один из которых - «Position» Результатом следующей строчки кода
print(executeSource.data["Position"];)
является [object Object] Так вот, как я не пытался вытащить из этого [object Object] позицию курсора, так ничего и не вышло. Изучал исходник этого dataengine и не нашел в них методов работы с этим объектом. Два дня шарился по интернету, и не нашел ни одного примера работы с plasma_engine_mose, ни одного плазмоида хоть как то использующего этот dataengine. Поэтому решил спросить, может кто сможет мне подсказать, как с помощью plasma_engine_mose получить текущую позицию курсора из кода на QML в пятой плазме?



Последнее исправление: konstantinz (всего исправлений: 1)

А как пытался вытащить? Судя по коду kde-workspace/plasma/dataengines/mouse/mouseengine.cpp

QPoint pos = QCursor::pos();
setData(QLatin1String("Position"), QVariant(pos));
тип объекта executeSource.data[«Position»] должен конвертиться в qml как обычный point. Что выдаст
var p = executeSource.data["Position"]; console.log(p.x);
?

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Вот спасибо. Все работает. Но согласитесь, не очевидно это как то. Ведь гораздо очевиднее писать

var p = executeSource.data["Position"]; 
console.log(p.x, p.y);
чем
var p = executeSource.data["Position"]["Position"]; 
console.log(p.x, p.y);
Спасибо большое за помощь

konstantinz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.