多文档编辑器打印问题
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 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); /****/ }}
页:
[1]