何が悪いのかわかりません。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);
}
その結果、私はいつも得ました:
編集:
- ここでは、Qt が html および css を処理する方法についての情報を示します -サポートされている HTML サブセット。
- この問題は WebKit を省略して解決できますか?