2

何が悪いのかわかりません。Qt 4.8.4 (clang、gcc) を使用しています。HTML を使用して作成したカスタム テーブルを印刷したい。テーブル内でワードワープを取得できず、テーブル幅を制限できないことがわかりました。

その問題をより迅速に理解するために、そのような動作を再現できます: で Qt プロジェクトを作成しMainWindow、そのコンストラクターに次のコードを記述します。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString tablesHtml("<table border=\"1\" width=\"200\">"
                   "<tr><td>"
                   "NOT LONG TEXT, 200px"
                   "</td></tr>"
                   "</table>"

                   "<table border=\"1\" width=\"300\">"
                   "<tr><td>"
                   "NOT LONG TEXT, 300px"
                   "</td></tr>"
                   "</table>"

                   "<table border=\"1\" width=\"300\">"
                   "<tr><td>"
                   "VEEERY LOOOONG TEEEEXT LONG LONG"
                   "VEEERY LOOOONG TEEEEXT LONG LONG"
                   "WHY NOT 300px, WHY?!"
                   "</td></tr>"
                   "</table>");
    doc.setHtml(tablesHtml);
    QPrinter prn;
    prn.setPageSize(QPrinter::A4);
    prn.setPageMargins(30, 20, 15, 20, QPrinter::Millimeter);
    QPrintPreviewDialog previewDialog(&prn);
    QObject::connect( &previewDialog, SIGNAL( paintRequested (QPrinter*) ),
                      this, SLOT ( onPrintRequested(QPrinter*) ));
    previewDialog.exec();
}

そして追加public slots: void onPrintRequested(QPrinter*p);

void MainWindow::onPrintRequested(QPrinter *p)
{
    QPainter pnt(p);
    doc.drawContents(&pnt);
}

その結果、私はいつも得ました: 印刷の問題

編集:

  1. ここでは、Qt が html および css を処理する方法についての情報を示します -サポートされている HTML サブセット
  2. この問題は WebKit を省略して解決できますか?
4

0 に答える 0