@@ -17,11 +17,12 @@ MainWindow::MainWindow(QWidget *parent) :
17
17
QAction *actionPrintPreview = new QAction (tr (" 打印预览" ), this );
18
18
QAction *actionPdf = new QAction (tr (" 生成pdf" ), this );
19
19
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);
25
26
}
26
27
27
28
MainWindow::~MainWindow ()
@@ -31,20 +32,50 @@ MainWindow::~MainWindow()
31
32
32
33
void MainWindow::doPrint ()
33
34
{
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
+ }
34
48
35
49
}
36
50
37
51
void MainWindow::doPrintPreview ()
38
52
{
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 ();
40
61
}
41
62
42
63
void MainWindow::printPreview (QPrinter *printer)
43
64
{
65
+ ui->textEdit ->print (printer);
44
66
45
67
}
46
68
47
69
void MainWindow::createPdf ()
48
70
{
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
+ }
50
81
}
0 commit comments