日志
获取打印机信息,获取支持的纸张信息,返回选择的纸张信息
2017-11-05 16:53
头文件中定义 QList <QPrinterInfo > list; //打印机的所有信息 QList <QStringList> pageSizeInfo; //保存支持的纸张信息 QStringList printerList; // 保存目前的打印机信息 QList<QPageSize> userPageSizeList; // 保存打印机支持的纸张的纸张信息。 对于多台打印机的,可以用QList <QList <QPageSize>> userPageSizeList 更好些。 // 实现方式: list = QPrinterInfo::availablePrinters(); for(const QPrinterInfo& printerInfo : list) { printerList.append(printerInfo.description()); QStringList plist; for(QPageSize ps : printerInfo.supportedPageSizes()) { plist.append( ps.name()); userPageSizeList.append(ps); } pageSizeInfo.append(plist); } // 设了两个comboBox .。1 用来显示当前打印机的支持的纸张,2用来显示当前选择的打印机。用信号槽来连接 connect(ui->comboBox_2,SIGNAL(currentIndexChanged(int )),this, SLOT(printerChanged(int ))); //打印机改变后,支持的纸张也改变。 void MainWindow::printerChanged(int index) { qDebug()<<"printer changed"; if(pagesizeInfo.isEmpty()) return; ui->comboBox->clear(); ui->comboBox->addItems(pagesizeInfo.at(index)); ui->comboBox->setCurrentText(0); } // 纸张改变后, QPageSize 也变了。用户可以获取改变后的pagesize void MainWindow::on_comboBox_currentIndexChanged(int index) { QString indexText = ui->comboBox->itemText(index); QPrinter printer; foreach(QPageSize page,userPageSizeList){ if(page.name() == indexText){ qDebug() << page.name(); printer.setPageSize(page); qDebug()<<printer.logicalDpiX() << printer.logicalDpiY(); qDebug ()<<printer.pageRect().width()<<printer.pageRect().height(); } } } // QString indexText = ui->comboBox->itemText(index); // int combox2Index = ui->comboBox_2->currentIndex(); // QPrinter printer; // if(userPageSizeList.isEmpty()) // return; // if(userPageSizeList.at(combox2Index).isEmpty()) // return; // // for(int i = 0 ; i < userPageSizeList.at(combox2Index).size(); i++){ // foreach(QPageSize page , userPageSizeList.at(combox2Index))//.at(i); // { // if(page.name() == indexText){ // // // qDebug() <<"i"<<i; // qDebug() << "page name:" <<page.name(); // printer.setPageSize(page); // qDebug()<<"rect:" << printer.pageRect(); // } // } 本来是想用枚举的办法,根据选择的currentIndextext 来逐个判断,可它支持的有100多种,这不是累死人吗?又找不到遍历枚举的办法,就换了list这个办法。 参考了下面的博文 http://blog.csdn.net/amnes1a/article/details/70597506 |
下一篇: 建立一个类,简单的实现打印机、纸张、纸张名字之间的转换
上一篇: 完成了单桩承载力特征值的计算程序