QPageRanges::operator=() の使い方:Qt GUIでページ範囲を効率的にコピー
QPageRanges::operator=()
は、QPageRanges
オブジェクトを別のQPageRanges
オブジェクトにコピーするために使用される演算子オーバーロードです。これは、ページ範囲のコピーを作成する必要がある場合に役立ちます。
構文
QPageRanges& QPageRanges::operator=(const QPageRanges& other);
QPageRanges& QPageRanges::operator=(QPageRanges&& other);
説明
QPageRanges&& other
: コピー元のQPageRanges
オブジェクトへの移動参照const QPageRanges& other
: コピー元のQPageRanges
オブジェクトへの参照
戻り値
this
への参照。
詳細
QPageRanges::operator=()
は、コピー元のQPageRanges
オブジェクトのすべてのページ範囲をthis
オブジェクトにコピーします。コピー元のオブジェクトが空の場合、this
オブジェクトも空になります。
QPageRanges originalRanges;
originalRanges.addRange(1, 5);
originalRanges.addPage(10);
QPageRanges copyRanges;
copyRanges = originalRanges;
// copyRanges now contains the same page ranges as originalRanges
#include <QCoreApplication>
#include <QPageRanges>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// Create original page ranges
QPageRanges originalRanges;
originalRanges.addRange(1, 5);
originalRanges.addPage(10);
// Create copy page ranges
QPageRanges copyRanges;
// Copy original page ranges to copy page ranges
copyRanges = originalRanges;
// Print copy page ranges
for (const QPageRanges::Range& range : copyRanges.toRangeList()) {
qDebug() << "Range: %d - %d", range.first, range.last;
}
return 0;
}
このコードを実行すると、次の出力がコンソールに出力されます。
Range: 1 - 5
Range: 10
この出力は、copyRanges
オブジェクトが originalRanges
オブジェクトと同じページ範囲を含むことを示しています。
- コピー元のオブジェクトが空の場合
QPageRanges originalRanges;
QPageRanges copyRanges;
copyRanges = originalRanges;
// copyRanges is empty
- 移動参照を使用してページ範囲をコピーする
QPageRanges originalRanges;
originalRanges.addRange(1, 5);
originalRanges.addPage(10);
QPageRanges copyRanges;
copyRanges = std::move(originalRanges);
// originalRanges is empty
// copyRanges contains the same page ranges as originalRanges
これらの例は、QPageRanges::operator=()
のさまざまな使用方法を示しています。
QList<QPageRanges::Range> を使用する
QList<QPageRanges::Range>
を使用してページ範囲をコピーする方法は以下のとおりです。
#include <QCoreApplication>
#include <QPageRanges>
#include <QList>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// Create original page ranges
QPageRanges originalRanges;
originalRanges.addRange(1, 5);
originalRanges.addPage(10);
// Create copy page ranges as a QList<QPageRanges::Range>
QList<QPageRanges::Range> copyRangesList = originalRanges.toRangeList();
// Create QPageRanges object from copy page ranges list
QPageRanges copyRanges;
copyRanges.fromRangeList(copyRangesList);
// Print copy page ranges
for (const QPageRanges::Range& range : copyRanges.toRangeList()) {
qDebug() << "Range: %d - %d", range.first, range.last;
}
return 0;
}
Range: 1 - 5
Range: 10
std::copy_if を使用する
std::copy_if
アルゴリズムを使用してページ範囲をコピーする方法は以下のとおりです。
#include <QCoreApplication>
#include <QPageRanges>
#include <algorithm>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// Create original page ranges
QPageRanges originalRanges;
originalRanges.addRange(1, 5);
originalRanges.addPage(10);
// Create copy page ranges
QPageRanges copyRanges;
// Copy page ranges using std::copy_if
std::copy_if(originalRanges.begin(), originalRanges.end(), std::back_inserter(copyRanges),
[](const QPageRanges::Range& range) { return true; });
// Print copy page ranges
for (const QPageRanges::Range& range : copyRanges.toRangeList()) {
qDebug() << "Range: %d - %d", range.first, range.last;
}
return 0;
}
Range: 1 - 5
Range: 10
QPageRanges::operator=()
以外にも、Qt GUI でページ範囲をコピーするにはいくつかの方法があります。どの方法を使用するかは、状況によって異なります。
- 柔軟性と制御が必要な場合
QList<QPageRanges::Range>
またはstd::copy_if
を使用します。 - シンプルでわかりやすい方法が必要な場合
QPageRanges::operator=
を使用します。