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

多文档编辑器打印问题

3
回复
179
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2022-11-1 21:25:31 显示全部楼层 |阅读模式
1Qter豆
void TextEditn_action_Print_triggered()//打印文档
{
   
    QPrinter printer;
    QPrintDialog dlg(&printer,ui->mdiArea->activeSubWindow());
    if(dlg.exec() == QDialog::Accepted)
    {
       activeMdiChild->document()->print(&printer);
        /****/
    }
}
添加这行程序(activeMdiChild->document()->print(&printer);)后运行调试,当点击打印按钮时,程序会出现卡顿,过会就会退出。




回复

使用道具 举报

累计签到:57 天
连续签到:5 天
2022-11-2 09:29:34 显示全部楼层
给的东西太少了,我技术不够看不出来
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2022-11-2 10:53:41 显示全部楼层
本帖最后由 云水闲 于 2022-11-2 10:54 编辑

已解决。这里打印的是文本编辑器的内容,print函数的父指针应该是QtextEdit类,是一个部件(Widget);而这里的activeMdiChild是一个窗口,所以需要进行类型转换。
更改如下成功运行。

void TextEdit::on_action_Print_triggered()//打印文档{    //QTextEdit *child = qobject_cast<QTextEdit *>(ui->mdiArea->activeSubWindow()->widget());    QMdiSubWindow *window = ui->mdiArea->activeSubWindow();   // QTextEdit *child = qobject_cast<QTextEdit *>(activeMdiChild());    QTextEdit *child = qobject_cast<QTextEdit *>(window->widget());    QPrinter printer;    QPrintDialog dlg(&printer,ui->mdiArea->activeSubWindow());    if(dlg.exec() == QDialog::Accepted)    {       child->print(&printer);        /****/    }}




回复

使用道具 举报

累计签到:57 天
连续签到:5 天
2022-11-3 17:03:54 显示全部楼层
回复

使用道具 举报

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

欢迎访问Qt开源社区
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429 我知道了