Qt学习之路之文本打印

来源:互联网 发布:淘宝店铺怎么定位 编辑:程序博客网 时间:2024/06/06 03:45

本次的博文是 Qt学习之路之打开并显示文件内容文件 的后续~~~  

有关文本打印的代码,请注意代码中的注释

打印文本在工作中经常使用,类QPrintDialog标准对话框提供了打印机的选择,配置功能等。

在开始前,请先设置工程文件,加入:QT += printsupport, 不然编译不会通过~~~

file_widget.h

#ifndef FILEWIDGET_H#define FILEWIDGET_H#include <QFileDialog>#include <QWidget>#include <QPushButton>#include <QLabel>#include <QHBoxLayout>#include <QFile>#include <QIODevice>#include <QTextEdit>#include <QVBoxLayout>#include <QTextStream>#include <QMessageBox>#include <QPrintDialog>//---文本打印新增#include <QPrinter>//--文本打印新增class FileWidget : public QWidget{Q_OBJECTpublic:explicit FileWidget(QWidget *parent = 0);public slots:void slotOpenFileDialog();//打开打开文件对话框void slotPrintText();//--文本打印新增 --------打印文本文件private:QPushButton *openBtn;QPushButton *printBtn;//---文本打印按钮QLabel *tipsLabel;QTextEdit *showText;};#endif//FILEWIDGET_H
file_widet.cpp
#include "file_widget.h"FileWidget::FileWidget(QWidget *parent /*= 0*/) : QWidget(parent){//---按钮与label printBtn = new QPushButton("print", this);//---文本打印新增openBtn = new QPushButton("OPEN", this);connect(openBtn, SIGNAL(clicked()), this, SLOT(slotOpenFileDialog()));connect(printBtn, SIGNAL(clicked()), this, SLOT(slotPrintText()));//---文本打印新增tipsLabel = new QLabel("open file...", this);//----showTextshowText = new QTextEdit();//---按钮与label布局QVBoxLayout *vLayout = new QVBoxLayout();vLayout->addStretch();vLayout->addWidget(tipsLabel);vLayout->addWidget(openBtn);vLayout->addWidget(printBtn);//---文本打印新增vLayout->addStretch();vLayout->setSpacing(10);//---3个控件整体布局QHBoxLayout *hLayout = new QHBoxLayout(this);hLayout->addLayout(vLayout);hLayout->addWidget(showText);hLayout->setSpacing(10);hLayout->setContentsMargins(10, 2, 10, 2);//--显示布局setLayout(hLayout);//---窗口属性resize(400, 300);setWindowTitle("open file");}//------打开文件对话框void FileWidget::slotOpenFileDialog(){/*getOpenFileName函数说明函数原形: QStringList QFileDialog::getOpenFileNames(QWidget * parent = 0, const QString & caption = QString(),//  打开文件对话框的标题const QString & dir = QString(),//查找目录const QString & filter = QString(),//  设置需要过滤的文件格式QString * selectedFilter = 0, Options options = 0) [static]*///---获取文件名QString fileName = QFileDialog :: getOpenFileName(this, NULL, NULL, "*.h *.cpp *.txt");//---打开文件并读取文件内容QFile file(fileName);//--打开文件成功if (file.open(QIODevice ::ReadOnly | QIODevice ::Text)){QTextStream textStream(&file);while (!textStream.atEnd()){//---QtextEdit按行显示文件内容showText->append(textStream.readLine());}}else//---打开文件失败{/*information函数参数说明:函数原型QMessageBox::information(QWidget * parent, const QString & title,//--- 标题const QString & text,//---显示内容StandardButtons buttons = Ok,//---OK按钮StandardButton defaultButton = NoButton)[static]*/QMessageBox ::information(NULL, NULL, "open file error");}}//---打印文本void FileWidget::slotPrintText(){QPrinter printer;//--新建一个QPrinter对象QPrintDialog printDlg(&printer, this);if (printDlg.exec())//---用来判断用户是否点击了打印对话框上的“打印”按钮{//----获取文本内容QTextDocument *doc = showText->document();// ---打开打印对话窗口doc->print(&printer);}}

main.cpp

#include <QtWidgets/QApplication>#include "file_widget.h"int main(int argc, char *argv[]){QApplication a(argc, argv);FileWidget win;win.show();return a.exec();}


~~~~~~~~~笔者的机器上未连接任何打印设备,不能上最后的有关打印的效果截图了~~~~~~

~~~~~~若代码有错误,还请留言. 并指证~~~~  ^_^^_^


0 0
原创粉丝点击