You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QPrintPreviewDialog中获取当前正在预览的页码?

QPrintPreviewDialog 获取当前预览页码的实现方法

QPrintPreviewDialog 本质是对 QPrintPreviewWidget 的封装,完全可以获取当前预览页码,有两种实现方案:

  • 适配Qt 5.8及以上版本
    Qt 5.8起官方提供了QPrintPreviewDialog::previewWidget()公共方法,可以直接获取内部封装的QPrintPreviewWidget实例,直接调用其currentPage()方法即可:
// 实例化预览对话框
QPrintPreviewDialog previewDialog;
// 在需要获取页码的时机调用即可
int currentPreviewPage = previewDialog.previewWidget()->currentPage();
  • 兼容低版本Qt的方案
    如果使用的Qt版本低于5.8,没有提供previewWidget()接口,可以通过findChild查找对话框内部的QPrintPreviewWidget类型子部件实现:
QPrintPreviewDialog previewDialog;
// 查找内部封装的预览控件实例
QPrintPreviewWidget *internalPreviewWidget = previewDialog.findChild<QPrintPreviewWidget *>();
if (internalPreviewWidget) {
    int currentPreviewPage = internalPreviewWidget->currentPage();
    // 后续页码处理逻辑
}
  • 实时监听页码变化的方案
    如果需要在用户切换预览页码时实时触发逻辑,可以绑定QPrintPreviewWidget的pageChanged(int)信号:
QPrintPreviewDialog previewDialog;
QPrintPreviewWidget *internalPreviewWidget = previewDialog.findChild<QPrintPreviewWidget *>();
if (internalPreviewWidget) {
    connect(internalPreviewWidget, &QPrintPreviewWidget::pageChanged, this, [=](int newPage){
        // 页码变化时的处理逻辑,newPage即为当前最新页码
        qDebug() << "当前预览页码已切换为:" << newPage;
    });
}

注意:currentPage()的返回值从1开始计数,第一页对应返回值为1,不要和0起始的数组/列表索引逻辑混淆

内容的提问来源于stack exchange,提问作者Donk Mart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:24:03