单击“打印”按钮后,Qt打印对话框重新出现

时间:2015-07-08 08:16:24

标签: c++ qt

我正在尝试在Qt中打印图形。

信号和插槽连接如下:

connectStat = connect(_ui->printButton, SIGNAL(clicked()), this, SLOT(doPrint()));

,插槽如下:

...
QGraphicsScene * m_scene;
...
void GraphDrawerWidget::doPrint() {
    QPrinter printer;
    if (QPrintDialog(&printer).exec() == QDialog::Accepted) {
         printer.setOrientation(QPrinter::Landscape);
       QPainter painter(&printer);
        painter.setRenderHint(QPainter::Antialiasing);
        m_scene->render(&painter);
    }
}

出现“打印”对话框,单击“打印”按钮可以打印场景。但是,执行此操作后,将再次显示打印对话框。如果单击“打印”,“取消”或“窗口X”按钮无关紧要,单击后仍会显示。

我可能错误地连接信号/插槽吗?

1 个答案:

答案 0 :(得分:2)

发现它! 看来我在另一个名为run()的方法中执行了connect()(GraphDrawerWidget :: run()),这是我将数据输入Graphic的地方。

对于我添加到图形中的每个信号,此run()被调用一次,因此多次连接相同的插槽。

我现在在构造函数中连接,一切正常。