내 위젯에 밀리미터 격자를 그려야합니다. 그 일을 도울 수있는 수업이 있습니까? 몇 가지 수학 차트를 그리는 데 필요합니다.밀리미터 Qt 용지
답변
휠을 다시 만들기 전에 차트 라이브러리 중 일부는 discussed here으로 간주하십시오. QCustomPlot
과 Qwt
은 모두 포함하기 쉽고 맞춤 설정하기가 어렵지 않습니다. 둘 다 몇 가지 예를 제공합니다. 아마도 그 중 하나가 귀하의 문제를 해결하는 해결책이 될 수 있습니다.
가능한 라이브러리는 당신이 painEvent()
을 재 구현 서브 클래스QWidget
및 하여 자신 만의 솔루션을 만들 수 있습니다 귀하의 요구 사항을 충족하지 않는 경우. QPainter
및 QPainterPath
은 작업의 핵심 클래스입니다. Qt
은 특히 interesting tutorials을 제공하며 특히 "기본 도면 예제"및 "페인터 경로 예제"를 제공합니다. 아마 this simple example 또는 this one을 즐기실 수도 있습니다. 이 참조에서 시작하여 그리드를 쉽게 그릴 수 있어야합니다.
은 2D 그래픽 많은 상품을 관리하기위한 표면을 제공
QGraphicsScene
(인용 문서)를 포함한다.
이러한 클래스는 위에 소개 된 페인팅 API를 활용하여 charting purposes 및 grids에 사용되었습니다. 이 클래스를 사용하는 동안 전반적인 좋은 성능을 보장하려면 drawBackground()
함수에서 그리드를 그리려면 예 : here (또는 배경 비트 맵 사용)과 같이 완료해야합니다.
모든 API는 픽셀에서 작업을 논의했다. 실제적으로 밀리미터 표현을 화면에 표시하는 경우 qApp
포인터에서 직접 액세스 할 수있는 QScreen
개체를 악용 할 수 있습니다. physicalDotsPerInch()
(KitKat에서 무한한 값을 반환하기 때문에 Android 용 logicalDotsPerInch()
)과 같은 여러 기능을 제공합니다. 밀리미터에 대한 픽셀 근사값은 다음과 같이 계산할 수 있습니다.
int dotPerMillimeter = qRound(qApp->primaryScreen()->physicalDotsPerInch()/25.4)
답장을 보내 주셔서 감사합니다. 불행히도 내 프로젝트에서 이것을 달성하기 위해 Qwt 등을 사용할 수는 없습니다. 하지만 수식이 도움이 될 수 있습니다. 감사합니다 – Tatarinho
알겠습니다. 글쎄, [이 좋은 대답] (http://stackoverflow.com/questions/26828636/efficiently-painting-physically-accurate-ruler-in-qt)도 고려하십시오. 목적은 통치자를 그리는 것이었지만 당신은 목표를 달성하기 위해 그것을 (그리고 내 공식)으로 만들 수 있습니다. – BaCaRoZzo
컴퓨터 화면에 항목을 그릴 때 밀리미터가 아닌 픽셀 단위로 도면을 지정합니다. 밀리미터 단위로 프린터에 인쇄 할 수있는 것을 목표로 삼고 있습니까? 아니면 화면에서 정확한 밀리미터 치수를 얻으려고합니까? – docsteer
픽셀을 매핑하는 방법을 알기 위해서는 화면 해상도와 실제 너비 및 화면 높이를 알아야합니다. –
나는 화면에서 정확한 밀리미터 치수를 얻으려고합니다. – Tatarinho