如何打印QStringListModel内容



我需要将QStringListModel的内容打印到打印机,in'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&amp; index,int remo = qt :: displayrole)const const是从模型中获取数据的首选方法。

相关内容

  • 没有找到相关文章

最新更新