본문 바로가기
개발이야기

Qt4에서 Qt5포팅시 팁

by 코저씨 2024. 12. 1.
728x90
1. qt_screen-> deviceWidth()

함수는 Qt 4에서 사용되는 함수로, 특정 스크린의 실제 픽셀 단위 너비를 반환합니다.

이 함수는 스크린의 물리적 너비를 픽셀 단위로 제공하여, 화면에 표시되는 내용의 정확한 크기를 계산하는 데 사용될 수 있습니다. 쉽게 말해, 이 함수는 스크린의 가로 길이를 픽셀 단위로 알려줍니다. 예를 들어, 1920x1080 해상도의 디스플레이가 있다면, deviceWidth() 함수는 1920을 반환할 것입니다.

 

라고 한다. 이 함수를 Qt5에서는 지원하지 않기에 , 아래와 같이 컨버팅 해야 한다.

#include <QApplication>
#include <QScreen>
#include <QDebug>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QScreen *screen = QGuiApplication::primaryScreen();
    if (screen) {
        int width = screen->size().width();
        qDebug() << "Screen width:" << width;
    }

    return 0;
}

 

2. qt_screen->mapFromDevice
이 함수는 Qt 4에서 사용된 함수로, 디바이스 좌표계를 스크린 좌표계로 변환하는 역할을 합니다. 이 함수는 일반적으로 픽셀 좌표계에서 스크린 좌표계로 변환이 필요할 때 사용됩니다.

예를 들어, 터치스크린 장치나 다른 입력 장치에서 얻은 좌표가 디바이스 좌표계에 있을 때, 이 좌표를 스크린 좌표계로 변환하여 정확한 위치를 파악할 수 있습니다.

쉽게 말하면, 입력 장치에서 얻은 좌표를 스크린 좌표로 변환해 주는 함수라고 할 수 있습니다.

 

라고 한다. 아래와 같이 screen 클래스에서 QPoint값을 넣어서 계산하면 된다.

#include <QApplication>
#include <QScreen>
#include <QDebug>

QPoint mapFromDevice(const QPoint &devicePoint, QScreen *screen) {
    // 디바이스 좌표계를 스크린 좌표계로 변환하는 예제
    // 예를 들어, 단순히 동일한 좌표를 반환하는 경우
    return screen->geometry().topLeft() + devicePoint;
}

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QScreen *screen = QGuiApplication::primaryScreen();
    if (screen) {
        QPoint devicePoint(100, 100);
        QPoint screenPoint = mapFromDevice(devicePoint, screen);
        qDebug() << "Screen point:" << screenPoint;
    }

    return 0;
}

 

 

728x90