Qt 5, получить положение мыши на экране

Прежде всего, я хотел бы отметить, что я нашел этот постКак получить положение мыши на экране в Qt? но это "просто не сработало" для меня. Я провел несколько тестов, и результаты не сработали, как я ожидал, поэтому я решил написать новую статью, чтобы рассказать о проведенном тесте и найти альтернативное решение.

Вот код, который я использовал для теста:

QScreen *screen0 = QApplication::screens().at(0);
QScreen *screen1 = QApplication::screens().at(1);

printf("screen0 %s \n", screen0->name().toStdString().c_str());
printf("screen1 %s \n", screen1->name().toStdString().c_str());

// Position on first screen.
QPoint pos0 = QCursor::pos(screen0);

// Position on second screen.
QPoint pos1 = QCursor::pos(screen1);

printf("pos 0: %d, %d \n", pos0.x(), pos0.y());
printf("pos 1: %d, %d \n", pos1.x(), pos1.y());

// Get position without screen.
QPoint pos = QCursor::pos();
printf("pos: %d, %d \n", pos.x(), pos.y());

Я ожидал, что только один экран вернет правильную позицию, поскольку курсор находится только на одном экране, а не на обоих. Но это не тот случай, обе позиции (pos0 а такжеpos1) имеет точно такое же значение, как мы видим на выходе:

screen0 DVI-D-0 
screen1 HDMI-0 
pos 0: 1904, 1178 
pos 1: 1904, 1178 
pos: 1904, 1178 

Поскольку обе позиции имеют одинаковые значения, я не могу знать, на каком экране находится курсор. Я не знаю, нормальное ли это поведение или ошибка, так как в документации не сказано, что происходит, когда аргумент экрана не тот экран, где находится мышь.

Моя идея состоит в том, чтобы открыть / запустить приложение (выполняемое демоном Qt, которое должно обнаружить выбранный экран) на экране, где находится мышь. Я знаю что сlibx11 это возможно, потому что я делал это в прошлом, но мне нужно работать с Qt 5, и я не могу понять, как обнаружить выбранный экран с помощью Qt.,

Я также сделал другие тесты, используяQApplication а такжеQDesktopWidget занятия без удачи.

Ответы на вопрос(4)

Ваш ответ на вопрос