云水闲 发表于 2022-11-1 21:25:31

多文档编辑器打印问题

void TextEdit:on_action_Print_triggered()//打印文档
{
   
    QPrinter printer;
    QPrintDialog dlg(&printer,ui->mdiArea->activeSubWindow());
    if(dlg.exec() == QDialog::Accepted)
    {
       activeMdiChild->document()->print(&printer);
      /****/
    }
}
添加这行程序(activeMdiChild->document()->print(&printer);)后运行调试,当点击打印按钮时,程序会出现卡顿,过会就会退出。




十里八乡俊后生 发表于 2022-11-2 09:29:34

给的东西太少了,我技术不够看不出来

云水闲 发表于 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);      /****/    }}




十里八乡俊后生 发表于 2022-11-3 17:03:54

页: [1]
查看完整版本: 多文档编辑器打印问题