2016-12-06 20 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は はへれる好ましい方法ですモデルからデータを取り出す。

関連する問題