Qt QPrintPreviewDialog 打印预览对话框 汉化

项目场景:

Qt写的一个项目里面没有用到Qt的翻译功能,里面的控件命名都是汉语 例如: QMessageBox::question(this, "图片已修改", "还原将丢失已修改的图片,是否确认退出?", QMessageBox::Yes | QMessageBox::No);

问题描述:

当使用Qt自带的打印预览的对话框QPrintPreviewDialog时, 对话框的中的按钮提示信息却是英文的。 例如:Fit Width, Fit page等。 这些都没有汉化

原因分析:

这是因为这是Qt自己的控件,里面的提示我们无法改,而又没有加载相对应得中文翻译文件,所以它只能显示英文的。

解决方案:

因为这个项目是前面的人没有做相应的翻译功能,所以为了解决这个bug,我从Qt的安装目录下,找到了"**qt_zh_CN.qm**"翻译文件,然后在 代码中加载这个翻译文件, QTranslator translator; bool result = translator.load("qt_zh_CN.qm"); QApplication::installTranslator(&translator);
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt的TableWidget类并没有直接提供打印预览的功能,但我们可以利用一些其他的Qt类来实现该功能。 首先,我们可以使用QPrinter类来实现页面打印的功能。QPrinter类提供了打印相关的设置和功能。 接着,我们需要将TableWidget的内容显示到打印机上。可以通过QPainter类的drawTable函数来实现,该函数可以将TableWidget的内容绘制到指定的打印设备上。 以下是大致的实现步骤: 1. 创建一个QPrinter对象,并设置打印相关的属性,比如纸张大小、打印方向等。 2. 创建一个QPainter对象,并将其与QPrinter对象关联起来,使其在打印机上进行绘制。 3. 调用QPainter的drawTable函数来将TableWidget的内容绘制到打印设备上。可以通过循环遍历TableWidget的每一项,然后使用QPainter的drawText函数将项的文本绘制到指定的位置上。 4. 调用QPainter的end函数结束绘图。 5. 最后,调用QPrinter的print函数打印预览内容。 参考代码如下: ```cpp void MainWindow::printPreview() { QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPrinter::A4); printer.setOrientation(QPrinter::Portrait); QPrintPreviewDialog preview(&printer, this); connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*))); preview.exec(); } void MainWindow::printPreview(QPrinter *printer) { QPainter painter(printer); int rowCount = ui->tableWidget->rowCount(); int columnCount = ui->tableWidget->columnCount(); int x = 0; int y = 0; for (int row = 0; row < rowCount; ++row) { for (int column = 0; column < columnCount; ++column) { QTableWidgetItem *item = ui->tableWidget->item(row, column); if (item) { QRectF rect(x, y, ui->tableWidget->columnWidth(column), ui->tableWidget->rowHeight(row)); painter.drawText(rect, Qt::AlignCenter, item->text()); } x += ui->tableWidget->columnWidth(column); } x = 0; y += ui->tableWidget->rowHeight(row); } painter.end(); } ``` 通过调用printPreview函数,即可实现打印预览功能。在代码中,我们使用QPrintPreviewDialog类创建一个打印预览对话框,并与指定的QPrinter对象关联起来。然后,通过连接paintRequested信号与printPreview槽函数,当打印预览对话框需要进行绘图时,将调用printPreview函数进行绘制。在printPreview函数中,通过QPainter类将TableWidget的内容绘制到打印设备上,最后调用QPainter的end函数结束绘图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值