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= を使用します。