如何打印 QStringListModel 内容?
How do I print QStringListModel content?
我需要将 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();
}
}
抱歉我的英语不好,谢谢你的帮助。
您可以从您的模型中得到 QStringList
:
QStringList list = model->stringList();
从 QStringList
得到你的 QString
使用 join()
:
QString str = list.join(" ");
在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 & index, int role = Qt::DisplayRole) const
是从模型中获取数据的首选方式。
我需要将 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();
}
}
抱歉我的英语不好,谢谢你的帮助。
您可以从您的模型中得到 QStringList
:
QStringList list = model->stringList();
从 QStringList
得到你的 QString
使用 join()
:
QString str = list.join(" ");
在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 & index, int role = Qt::DisplayRole) const 是从模型中获取数据的首选方式。