Skip to content

Commit 40f0003

Browse files
添加打印机使用的demo
1 parent 05e3d68 commit 40f0003

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

qt_print/mainwindow.cpp

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ MainWindow::MainWindow(QWidget *parent) :
1717
QAction *actionPrintPreview = new QAction(tr("打印预览"), this);
1818
QAction *actionPdf = new QAction(tr("生成pdf"), this);
1919

20-
connect(actionPrinter, SIGNAL(triggered()), this, SLOT(doPrint));
21-
connect(actionPrintPreview, SIGNAL(triggered()), this, SLOT(doPrintPreview));
22-
connect(actionPdf, SIGNAL(triggered()), this, SLOT(createPdf));
23-
24-
20+
connect(actionPrinter, &QAction::triggered, this, &MainWindow::doPrint);
21+
connect(actionPrintPreview, &QAction::triggered, this, &MainWindow::doPrintPreview);
22+
connect(actionPdf, &QAction::triggered, this, &MainWindow::createPdf);
23+
ui->mainToolBar->addAction(actionPrinter);
24+
ui->mainToolBar->addAction(actionPrintPreview);
25+
ui->mainToolBar->addAction(actionPdf);
2526
}
2627

2728
MainWindow::~MainWindow()
@@ -31,20 +32,50 @@ MainWindow::~MainWindow()
3132

3233
void MainWindow::doPrint()
3334
{
35+
// 定义一个打印机对象
36+
QPrinter printer;
37+
// 创建打印机对话框
38+
QPrintDialog dlg(&printer, this);
39+
// 如果文本编辑器中有选中文本区域,则打印选中的区域
40+
if (ui->textEdit->textCursor().hasSelection()) {
41+
dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);
42+
}
43+
44+
// 如果按下了打印按钮
45+
if (dlg.exec() == QDialog::Accepted) {
46+
ui->textEdit->print(&printer);
47+
}
3448

3549
}
3650

3751
void MainWindow::doPrintPreview()
3852
{
39-
53+
// 定义一个打印机对象
54+
QPrinter printer;
55+
// 创建预览对话框
56+
QPrintPreviewDialog preview(&printer, this);
57+
// 发信号给printPreview生成预览界面
58+
connect(&preview, &QPrintPreviewDialog::paintRequested, this, &MainWindow::printPreview);
59+
// 等待打印界面返回
60+
preview.exec();
4061
}
4162

4263
void MainWindow::printPreview(QPrinter *printer)
4364
{
65+
ui->textEdit->print(printer);
4466

4567
}
4668

4769
void MainWindow::createPdf()
4870
{
49-
71+
QString fileName = QFileDialog::getSaveFileName(this, tr("导出PDF文件"), QString(), "*.pdf");
72+
if (!fileName.isEmpty()) {
73+
if (QFileInfo(fileName).suffix().isEmpty()) {
74+
fileName.append(".pdf");
75+
}
76+
QPrinter printer;
77+
printer.setOutputFormat(QPrinter::PdfFormat);
78+
printer.setOutputFileName(fileName);
79+
ui->textEdit->print(&printer);
80+
}
5081
}

0 commit comments

Comments
 (0)