標準的な紙の寸法をQt GUIで取得:QPageSize::sizePoints()の使い方
QPageSize::sizePoints()
は、Qt GUIライブラリにおいて、標準的な紙の寸法に基づいて、指定されたページサイズIDのサイズをポイント単位で返します。この関数は、印刷やページレイアウトなどのタスクに役立ちます。
構文
QSize QPageSize::sizePoints(PageSizeId pageSizeId) const;
パラメータ
pageSizeId
: 標準的な紙の寸法を表すPageSizeId
型の値。
戻り値
QSize
型の値。この値は、ページの幅と高さをポイント単位で表します。
例
QPageSize pageSize = QPageSize::A4;
QSize sizePoints = pageSize.sizePoints();
qDebug() << "A4 paper size in points:" << sizePoints;
このコードは、A4用紙のサイズをポイント単位で出力します。
詳細
QPageSize::sizePoints()
は、PageSizeId
に基づいて、ページのサイズをポイント単位で計算します。この計算は、プリンターの解像度やシステム設定などの要素を考慮して行われます。
この関数は、標準的な紙の寸法に基づいたサイズを返すため、印刷やページレイアウトなどのタスクに適しています。ただし、特定のプリンターや紙の種類に合わせたサイズが必要な場合は、QPageSize::size()
関数を使用する必要があります。
QPageSize::sizePoints()
は、const関数です。つまり、この関数はオブジェクトの状態を変更しません。QPageSize::sizePoints()
は、静的メンバ関数です。つまり、QPageSize
オブジェクトを作成せずに直接呼び出すことができます。
QPageSize::rectPoints()
: 指定されたページサイズIDの矩形をポイント単位で返します。QPageSize::rect()
: 指定されたページサイズIDの矩形を返します。QPageSize::sizePixels()
: 指定されたページサイズIDのサイズをピクセル単位で返します。QPageSize::size()
: 指定されたページサイズIDのサイズを指定された単位で返します。
#include <QCoreApplication>
#include <QPageSize>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QPageSize pageSize = QPageSize::A4;
QSize sizePoints = pageSize.sizePoints();
qDebug() << "A4 paper size in points:" << sizePoints;
return 0;
}
例2:異なるページサイズIDのサイズをポイント単位で出力
#include <QCoreApplication>
#include <QPageSize>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QPageSize pageSizes[] = {
QPageSize::A0,
QPageSize::A1,
QPageSize::A2,
QPageSize::A3,
QPageSize::A4,
QPageSize::A5,
QPageSize::A6,
QPageSize::A7,
QPageSize::A8,
QPageSize::A9,
QPageSize::A10
};
for (QPageSize pageSize : pageSizes) {
QSize sizePoints = pageSize.sizePoints();
qDebug() << pageSize.id() << ":" << sizePoints;
}
return 0;
}
このコードは、A0からA10までの標準的な紙の寸法のサイズをポイント単位で出力します。
例3:指定された単位でページサイズを返す
#include <QCoreApplication>
#include <QPageSize>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QPageSize pageSize = QPageSize::A4;
QSize sizePoints = pageSize.sizePoints();
QSize sizePixels = pageSize.sizePixels();
QSize sizeMillimeters = pageSize.size(QPageSize::Millimeter);
qDebug() << "A4 paper size in points:" << sizePoints;
qDebug() << "A4 paper size in pixels:" << sizePixels;
qDebug() << "A4 paper size in millimeters:" << sizeMillimeters;
return 0;
}
このコードは、A4用紙のサイズをポイント、ピクセル、ミリメートル単位で出力します。
#include <QCoreApplication>
#include <QPageSize>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QPageSize pageSize = QPageSize::A4;
QRect rectPoints = pageSize.rectPoints();
qDebug() << "A4 paper rectangle in points:" << rectPoints;
return 0;
}
代替方法
- 単位変換を行う
- カスタムページサイズを作成する
QPrinter::PageSize
を使用する
QPrinter::PageSizeを使用する
QPrinter::PageSize
は、QPrinter
クラスによって提供される列挙型です。この列挙型は、標準的な紙の寸法を表す定数を定義しています。QPageSize::sizePoints()
を使用する代わりに、QPrinter::PageSize
を使用してページサイズを指定することができます。
QPrinter printer;
QPrinter::PageSize pageSize = printer.PageSize;
if (pageSize == QPrinter::A4) {
qDebug() << "Current printer page size is A4";
} else {
qDebug() << "Current printer page size is:" << pageSize;
}
このコードは、現在のプリンターのページサイズを取得し、A4かどうかを確認します。
カスタムページサイズを作成する
標準的な紙の寸法に合わない場合は、カスタムページサイズを作成することができます。これを行うには、QPageSize
コンストラクタを使用して、幅と高さをポイント単位で指定します。
QPageSize customPageSize(210, 297); // Letter size in points
QSize sizePoints = customPageSize.sizePoints();
qDebug() << "Custom page size in points:" << sizePoints;
このコードは、Letterサイズのカスタムページサイズを作成し、そのサイズをポイント単位で出力します。
単位変換を行う
QPageSize::sizePoints()
は、ページサイズをポイント単位で返します。他の単位でページサイズを取得する必要がある場合は、単位変換を行う必要があります。
QPageSize pageSize = QPageSize::A4;
QSize sizePoints = pageSize.sizePoints();
double centimetersPerPoint = 0.3937; // Conversion factor from points to centimeters
QSize sizeCentimeters = QSize(sizePoints.width() * centimetersPerPoint,
sizePoints.height() * centimetersPerPoint);
qDebug() << "A4 paper size in centimeters:" << sizeCentimeters;
このコードは、A4用紙のサイズをポイント単位で取得し、センチメートル単位に変換します。