0

私はこれを試しました:

QPrintDialog printdia(MyWevView);

printdia.exec(); 

QPrinter* printer = printdia.printer();

QPainter painter(printer);      

MyWevView->render(&painter, MyWevView->pos(),MyWevView->visibleRegion());

ユーザーが受け入れるかどうかを確認していないことはわかっていますが、それは問題ではありません...毎回、ダイアログが表示されず、印刷されるだけです

そのため、最初に QPrintDialog が表示されない理由がわかりません。次に、プリンターが認識されてテキストを直接印刷する理由がわかりません

最初の問題を修正すると、2番目の問題が解決すると思います...

ありがとう!

4

1 に答える 1

2

以下は、正常QWebViewに動作する を使用した印刷の完全な動作例です。QPrintDialog

win.h

#ifndef _WIN_H_
#define _WIN_H_

#include <QtGui>
#include <QtWebKit>

class TestWindow : public QMainWindow
{
    Q_OBJECT
    public:
        TestWindow();

    private slots:
        void doPrint();
        void doPrintVis();

    private:
        QWebView* mView;
        Q_DISABLE_COPY(TestWindow)
};

#endif

win.cpp

#include "win.h"

TestWindow::TestWindow() :
    QMainWindow(),
    mView(new QWebView())
{
    setCentralWidget(mView); // Takes ownership

    mView->load(QUrl::fromUserInput("http://qt-project.org/doc/qt-4.8/qwebview.html"));

    QToolBar* tools = addToolBar("Tools");
    QAction* printAction = tools->addAction("Print");
    QAction* printVisAction = tools->addAction("Print Visible");

    connect(printAction, SIGNAL(triggered(bool)), this, SLOT(doPrint()));
    connect(printVisAction, SIGNAL(triggered(bool)), this, SLOT(doPrintVis()));
}

void TestWindow::doPrint()
{
    qDebug() << "TestWindow::doPrint()";

    QPrinter printer;
    QPrintDialog printDlg(&printer);
    if (printDlg.exec() == QDialog::Rejected)
        return;

    mView->print(&printer);
}

void TestWindow::doPrintVis()
{
    qDebug() << "TestWindow::doPrintVis()";

    QPrinter printer;
    QPrintDialog printDlg(&printer);
    if (printDlg.exec() == QDialog::Rejected)
        return;

    QPainter painter(&printer);
    mView->render(&painter, mView->pos(), mView->visibleRegion());
}

test.cpp

#include <QtGui>
#include <QtWebKit>

#include "win.h"

int main(int argc, char** argv)
{
    QApplication app(argc, argv);

    TestWindow win;
    win.show();

    return app.exec();
}

テストプロ

QT += core gui webkit
SOURCES=test.cpp win.cpp
HEADERS=win.h
于 2012-04-20T10:06:20.893 に答える