我正在尝试在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窗口”按钮都没关系,单击后它仍然显示。

我可能将信号/插槽连接错了吗?

最佳答案

找到了!
看来我正在使用另一种称为run()(GraphDrawerWidget :: run())的方法进行connect(),这是我将数据馈送到图形中的地方。

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

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

关于c++ - 单击“打印”按钮后,重新出现“Qt打印”对话框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31287068/

10-11 22:38
查看更多