2016-12-06 10 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에서 join()를 사용하여 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 :: 데이터 (CONST가 & 인덱스를 QModelIndex, INT 역할은 = Qt는 :: DisplayRole)는 const를 는에 선호하는 방법입니다 모델에서 데이터를 가져옵니다.