找回密码
 立即注册
收起左侧

Qt开源社区提供的程序出现问题(TextEdit)多文档编辑

4
回复
4543
查看
[复制链接]
累计签到:8 天
连续签到:1 天
来源: 2019-6-4 17:56:18 显示全部楼层 |阅读模式
1Qter豆

回复

使用道具 举报

累计签到:118 天
连续签到:2 天
2019-6-4 18:06:52 显示全部楼层
你可以把出现的问题具体贴出来
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2019-6-5 08:10:59 显示全部楼层
本帖最后由 孙玉君 于 2019-6-5 08:12 编辑

void TextEdit:n_action_PDF_triggered()//输出PDF文档
{
    if(activeMdiChild())
    {
        QString fileName = QFileDialog::getSaveFileName(
                this, "Export PDF",activeMdiChild()->curFile + ".pdf","*.pdf");
            if (!fileName.isEmpty())
            {
                if (!(QFileInfo(fileName).suffix().isEmpty()))
                {
                    fileName.append(".pdf");
                }
                activeMdiChild();//这个地方调用这个函数时已经返回0了
                QPrinter printer(QPrinter::HighResolution);
                printer.setPageSize(QPrinter::A4);
                printer.setOutputFormat(QPrinter:dfFormat);
                //些处可以写上文件路径
                printer.setOutputFileName(fileName);
//                QTextDocument document;
                activeMdiChild()->document()->print(&printer);
//                document.print(&printer);
                second_statusLabel->setText(tr("输出PDF文档成功"));
            }
    }

}

MdiChild *TextEdit::activeMdiChild()//返回激活状态的子窗口指针
{
    if (QMdiSubWindow *activeSubWindow = ui->mdiArea->activeSubWindow())
        return qobject_cast<MdiChild *>(activeSubWindow->widget());
    return 0;
}
回复

使用道具 举报

累计签到:118 天
连续签到:2 天
2019-6-5 09:24:45 显示全部楼层
孙玉君 发表于 2019-6-5 08:10
void TextEdit:n_action_PDF_triggered()//输出PDF文档
{
    if(activeMdiChild())

你仔细看下这段代码,我怎么看也不对啊!if (QMdiSubWindow *activeSubWindow = ui->mdiArea->activeSubWindow())  “=”是赋值操作啊,“==”才是判断
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2019-6-6 11:08:44 显示全部楼层
本帖最后由 孙玉君 于 2019-6-6 11:14 编辑

源码就是这样写的,就是赋值操作。我看了本书,上面也是这么写的,if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow()),它这条语句就是判断mdiArea->activeSubWindow()是不是活动的,不是活动的就是null,官方文档 “Returns a pointer to the current active subwindow. If no window is currently active, 0 is returned.”,这样写我觉得没问题。我现在的疑问是为什么出来一个保存框的时候,窗口由原来的活动变成了非活动。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了