hailler的个人主页

http://www.qtcn.org/bbs/u/183962  [收藏] [复制]

hailler

  • 0

    关注

  • 2

    粉丝

  • 14

    访客

  • 等级:新手上路
  • 总积分:21
  • 保密,2011-01-01

最后登录:2017-12-15

更多资料

日志

建立一个类,简单的实现打印机、纸张、纸张名字之间的转换

2017-11-09 21:52
被打印机名字,打印机支持的纸张名字,纸张的尺寸信息 搞得一头雾水。
想简单的实现一个功能,两个combobox,一个显示 支持的打印机名称,一个显示该打印机支持的纸张名称,改变打印机的同时,支持的纸张名称页改变。
可QPrinterInfo 类里只是支持 QPageSize,而需要自己从QPageSize 里自己提取 name。于是简单的做了个类,可以直接实现各个转换。


#ifndef QTEPRINTER_H
#define QTEPRINTER_H

#include <QString>
#include <QStringList>
#include <QList>
#include <QPageSize>
#include <QMap>

class QTEPrinter
{
public:
    QTEPrinter();
    QStringList printerNameList();
    QStringList pageNameList(const QString &printerName);
    QList<QPageSize > pageSizeList(QString &printerName);
    QString pageName(QPageSize &pagesize);
    QPageSize pageSize (QString &pagename);
    QString defaultPrinter();
private:
    void iniInfomation();
    QStringList printerList;
    QMap <QString, QList <QPageSize> > printerToPageSizeMap;
    QList <QString> userPageNameList;
    QList <QPageSize> userPageSizeList;
    QString userDefaultPrinter;
};

#endif // QTEPRINTER_H
#include "qteprinter.h"
#include <QPrinter>
#include <QPrinterInfo>
#include <QPageSize>
#include <QDebug>

QTEPrinter::QTEPrinter()
{
    iniInfomation();
}
// 获取支持的打印机名称

QStringList QTEPrinter::printerNameList()
{
    return printerList;
}

// 根据打印机名称,获取支持的纸张的名称
QStringList QTEPrinter::pageNameList(const QString &printerName)
{
    if(!printerToPageSizeMap.isEmpty()){
        userPageSizeList = printerToPageSizeMap.value(printerName);
    }
    userPageNameList.clear();
    foreach(QPageSize page, userPageSizeList){

        userPageNameList.append(page.name());
    }
    return  userPageNameList;
}


// 根据打印机名称,获取支持的纸张的信息
QList<QPageSize> QTEPrinter::pageSizeList(QString &printerName)
{
    if(!printerToPageSizeMap.isEmpty()){
        userPageSizeList = printerToPageSizeMap.value(printerName);
        return userPageSizeList;
    }

}
// 根据纸张信息,获取纸张的名称
QString QTEPrinter::pageName(QPageSize &pagesize)
{
    return pagesize.name();
}

//根据纸张名称,获取纸张的信息

QPageSize QTEPrinter::pageSize(QString &pagename)
{
    foreach(QPageSize page,userPageSizeList){
        if(page.name() ==  pagename){
            return page;
        }
    }
}
// 默认的打印机名称
QString QTEPrinter::defaultPrinter()
{
    return  userDefaultPrinter;
}

//  初始化各个数据

void QTEPrinter::iniInfomation()
{
    printerList = QPrinterInfo::availablePrinterNames();
    userDefaultPrinter = QPrinterInfo::defaultPrinterName();
    QList <QPageSize> plist;
    QPrinterInfo info;
    foreach (QString printer, printerList){
        plist = info.printerInfo(printer).supportedPageSizes();
        printerToPageSizeMap.insert(printer,plist);
        plist.clear();
    }
}

分类:默认分类|回复:0|浏览:144|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:12-17 23:38
©2005-2016 QTCN开发网 版权所有 Gzip disabled