簡體   English   中英

如何打印QStringListModel內容?

[英]How do I print QStringListModel content?

我需要將QStringListModel的內容打印到打印機中,在“ void MainWindow :: on_pbImprime_clicked()”中,它可以毫無問題地打印任何Qstring,但是我不知道如何將QStringListModel的數據放入我的QString文本中有一個主意嗎?

這是我的代碼:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    model = new QStringListModel(this);

    ui->lbItens->setModel(model);

    ui->lbItens->setEditTriggers(QAbstractItemView::AnyKeyPressed |
                               QAbstractItemView::DoubleClicked);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pbAdd_clicked()
{
    int row = model->rowCount();

    model->insertRows(row,1);

    QModelIndex index = model->index(row);

    ui->lbItens->setCurrentIndex(index);
    ui->lbItens->edit(index);
}

void MainWindow::on_pbRemove_clicked()
{
    model->removeRows(ui->lbItens->currentIndex().row(),1);
}

void MainWindow::on_pbImprime_clicked()
{
        QPrinter printer;

        QPainter p(&printer);
        int x_pos = 20;
        int y_pos = 20;

        int row = model->rowCount();
        int i;

        for(i=0; i<row; i++){
            QString text = ;
            p.drawText(x_pos, y_pos, text);
            y_pos += p.fontMetrics().height();
        }
}

對不起,我的英語不好,謝謝你的幫助。

您可以從模型中獲取QStringList

QStringList list = model->stringList();

QStringList使用join()獲得您的QString

QString str = list.join(" ");

加入時,您可以選擇所需的分隔符。

或者,您可以嘗試此

void MainWindow::on_pbImprime_clicked()
{
    QPrinter printer;

    ...

    for(i=0; i<row; i++){
        QString text = model->data(model->index(row, 0)).toString();
        p.drawText(x_pos, y_pos, text);
        y_pos += p.fontMetrics().height();
    }
}

實際上,QVariant QAbstractItemModel :: data(const QModelIndex&index,int role = Qt :: DisplayRole)const是從模型中獲取數據的首選方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM