在QT中,实现打印功能,我们可以通过调用QPrinter类来实现。(这里为pos58热敏打印机)
如下实例:
.h文件:
#include <QPrintDialog>
#include <QPrinter>
#include <QPrintPreviewDialog>
#include <QFileDialog>
#include <QPageSetupDialog>
<pre name="code" class="cpp">namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void doPrint();//打印
private:
Ui::MainWindow *ui;
QSqlDatabase db;//数据库句柄
};
.cpp文件:
void MainWindow::doPrint()//打印
{
// 创建打印机对象
QPrinter printer;
// 创建打印对话框
QString printerName = printer.printerName();
if( printerName.size() == 0)
return;
<pre name="code" class="cpp">//QPrintDialog dlg(&printer, this);
if (dlg.exec() == QDialog::Accepted)
{
<pre name="code" class="cpp">QTextDocument doc;
//doc.setHtml(htmlString);
QFont font = doc.defaultFont();
//font.setBold(true);
font.setPointSize(3);
doc.setDefaultFont(font);
//打印尺寸
QSizeF s = QSizeF(printer.logicalDpiX() * (58 / 25.4), printer.logicalDpiY() * (297 / 25.4));
doc.setPageSize(s);
printer.setPageSizeMM(s);
printer.setOutputFormat(QPrinter::NativeFormat);
<pre name="code" class="cpp">doc.setHtml("hello");//打印hello
doc.print(&printer);
}
}