2016-12-06 4 views
0

Мне нужно распечатать содержимое QStringListModel на принтере в 'void MainWindow :: on_pbImprime_clicked()' Он печатает любую Qstring без проблем, но я не знаю, как поместить данные QStringListModel в текст QString , у кого есть идея?Как распечатать содержимое QStringListModel?

Вот мой код:

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(); 
     } 
} 

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

ответ

1

Вы можете получить QStringList от модели:

QStringList list = model->stringList(); 

С QStringList получить ваш QString используя join():

QString str = list.join(" "); 

В 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 :: данные (Const QModelIndex & индекс, внутр роль = Qt :: DisplayRole) Const является предпочтительным способом получить данные из модели.

Смежные вопросы