Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 单击打印按钮后,Qt打印对话框重新出现_C++_Qt - Fatal编程技术网

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

C++ 单击打印按钮后,Qt打印对话框重新出现,c++,qt,C++,Qt,我正在尝试用Qt打印图形 信号和插槽的连接方式如下: connectStat = connect(_ui->printButton, SIGNAL(clicked()), this, SLOT(doPrint())); 插槽如下所示: ... QGraphicsScene * m_scene; ... void GraphDrawerWidget::doPrint() { QPrinter printer; if (QPrintDialog(&printer).e

我正在尝试用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()都会被调用一次,因此同一个插槽连接了多次


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

注意,连接类型标志在这种情况下可能很有用。