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
занятия без удачи.