Как мне распечатать содержимое QStringListModel?

Мне нужно напечатать содержимое 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();
}
}

Извините за мой плохой английский и спасибо за помощь.

0

Решение

Ты можешь получить QStringList от вашей модели:

QStringList list = model->stringList();

От QStringList получить ваши QString с помощью join():

QString str = list.join(" ");

В присоединиться Вы можете выбрать разделитель, который вам нужен.

1

Другие решения

Кроме того, вы можете попробовать это

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
это предпочтительный способ получить данные из модели.

1

По вопросам рекламы [email protected]