問題タブ [qtextdocument]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html - QTextDocument HTML テーブルの幅
QT5の問題に苦しんでいます。QPainter
HTML テーブルを作成 (およびオブジェクトにペイント) しようとしています。これは私のコードです:
テーブルはペインターに正しく表示されますが、列幅は固定されていません。その結果を達成するために、私はほとんどすべてを試しました:
- QT のドキュメント
table-layout: fixed
からの設定はサポートされ ていません (幅はサポートされています!) width
二重引用符の有無、相対または絶対の設定- 各セルに
div
固定幅の a を挿入する (この質問http://www.qtcentre.org/threads/31661-QTextDocument-style-CSS-does-not-workに従って)ボディにスタイルを追加しようとしました。このような
/li>
これらの方法はどれも機能しませんでした。さらに、行を埋めるためにいくつかのスペースを追加しようとすると、テーブルがペイントされた後にそれらが削除されました。を使用して結果を達成できることも読みましたWebView
が、遅すぎます。立ち往生しています。誰かがそれを理解するのを手伝ってくれることを願っています。
qt - QTextDocument シリアライゼーション
QTextDocument シリアライゼーションに関する古いトピックを読みました: hereおよびhere。私が理解したように、追加のコードを使用せずにシリアル化と逆シリアル化を行うための実際の方法は、ドキュメントを html ファイルとして保存して読み取ることです。しかし、html 文字列の解析は困難で時間のかかる操作であるため、この方法は高速ではないと思います。
それ以外の場合は、ドキュメントをバイナリ形式で保存し、QTextCursor メソッドを順番に呼び出して逆シリアル化できます。これは、html 解析よりも高速だと思います。
QTextDocument バイナリ シリアル化のコード サンプルはありますか?
c++ - QTextDocument のサイズを更新する
QTextDocument::size() に問題があります
ドキュメントのサイズは、ユーザーが手動で TextEdit に何かを入力するたびに更新されます。(したがって、SIGNAL textChangedでは問題なく動作します)。ただし、コードでテキストを挿入します。
これを使用する場合:
textEdit に複数行のテキストがある場合でも、iHeight は常に 21 です。話した SIGNAL で同じコード行を使用すると、iHeight は魔法のように正しい数値に変わります。
基本的に、私の質問は、ドキュメントのサイズを更新して適切な数を返す方法ですか?
c++ - QTextDocument: キャッシュからリソースを削除する方法
私のプログラムは、いくつかQTextBrowser
の異なる を使用してコンテンツをユーザーに表示しています。これらのコンテンツには画像が含まれているものがあります。ファイルからQPixmap
s にロードし、表示するテキスト ドキュメントに追加します。
次のようなコードがあるとします。
後で、ブラウザーは不要になったので、削除します。
今私の問題は、この削除されたブラウザに追加されたリソースをキャッシュから削除するにはどうすればよいですか?
QTextDocument
のドキュメントには、次のように記載されています。
void QTextDocument::addResource(int type, const QUrl & name, const QVariant & resource)タイプと名前を識別子として使用して、リソースリソースをリソース キャッシュに追加します。
そのため、アプリケーションを閉じるまで、リソースはキャッシュに残ります。ただし、キャッシュには多くのリソースが追加されており、アプリが数日間連続して実行される可能性があるため、事前にクリアする必要があります。
html - QTextDocument ペインターの長方形の設定 (ペイントする場所)
QTextDocument::drawContents(painter) を使用してウィンドウの単純な html にペイントしています
ウィンドウの余白の内側で描画を行いたいのですが、(ペインター/ウィンドウで) 描画の対象となる四角形を直接指定する方法がわかりません。
私はそれを行ういくつかの方法を推測します:
QTextDocuments::setMargin を使用します (ただし、これは左/上に異なる値を許可しません。
HTMLをスタイル付きに配置する
<div>
ペインターに変換変換を適用します。
しかし、これは私がやりたいことには少し多すぎるように思えます。何かが欠けていると思います(QPainter::drawTextでターゲットの長方形を伝えるように)
qt - QTextDocument でデフォルトの文字フォーマットを設定する
QTextEdit
ユーザーが編集できる場所がありますQTextDocument
。
ドキュメントのデフォルトの色とフォントを設定したいのですが、ドキュメントにテキストがない場合、フォーマットは破棄されます。
これが私のコードです:
エディターが表示されると、特定の高さの黒い背景の線が表示されます。それで、これはうまくいったようです。
ただし、入力を開始するとすぐに行のサイズが小さくなり、テキストが表示されません。入力したテキストを選択すると、黒く(黒い背景に)書かれていて、フォントが変更されていることがわかります。
カーソルを使用して空でないテキストを挿入すると、すべてが機能し、編集時にフォーマットが変更されません。
ダミーテキストを挿入せずに、エディターがフォーマットを維持する方法はありますか?
このトピックの他の質問で述べたように、エディターでスタイルシートまたはパレットを使用できません。すべてはQTextFormat
sを使用して直接行う必要があります
qt - 正確な高さと幅の QGraphicsTextItem テキスト コンテンツを設定する
テキスト コンテンツの正確な幅と高さでテキスト アイテムを作成する必要があります。
テキストの高さは最も重要な要件です。
テキストの位置は、テキスト自体に対して相対的でなければなりません。
また、キャンバス上の正確な場所に配置できる必要があります。
(印刷可能な)キャンバス(より大きなQGraphicsScene
)、たとえば幅5インチ、高さ1インチと仮定すると、テキストは上下左右に引き伸ばされ、部分的にではなくキャンバスに配置されるはずです。
QGraphicsTextItem
アイテム タイプのサブクラス化を行っています。を使用してQTransform()
、必要なサイズ (インチ、mm、またはピクセル (72 * インチ)) にサイズ変更しています。
また、document()
マージンを 0 に設定し、内部 (QTextBlockFormat
マージンなど) もすべて 0 に設定します。
setItemSize(QSizeF sz)
必要に応じてサイズを変更する(ピクセル単位のsz)を実装しましたQGraphicsTextItem
。
sz はアイテムのバウンディング rect を使用して初期化されます。
折り返されていないと仮定すると、1 行のテキスト (この問題が解決されれば、複数行のテキストは個別に解決される可能性があります)。
項目をキャンバスに追加すると、まだ上下の余白が表示されますが、これはフォントの選択によって異なります。
アイテムを表示するために、アイテムの周りに四角形を描きました。
上/下の距離は、フォントの選択によって異なります。
これらの距離を決定するためにフォント メトリックを使用しようとしましpaint()
た (テキストが収まる位置と四角形を決定するために線を引いています)。
少なくとも、大文字、アクセントまたは特殊文字のフォントに使用する正しいサイズを決定できれば幸いです(もちろん、任意の文字を使用できる必要がありますが、それは出発点です)。しかし、最も単純なケースであっても、テキストコンテンツのサイズと位置(アイテムの (0,0) に相対的)
を決定する少なくとも何らかの方法.....
フォント メトリックtightBoundingRect()
はサイズに関して最も正確に見えますが、その位置を特定することは不可能であるため、どうにかしてアイテムを正しく作成し、キャンバスに収まるように正しくサイズ変更/シフトすることができます。
アイテムの (0,0) に対するテキストの少なくとも正確なサイズと位置を決定するのに苦労した例をいくつか示します (これを行うと、その情報を外部に公開するか、シフトを含めることができると仮定します)。サイズ変更時にアイテムが変換されます)。
フォント メトリックによってアドバタイズされるテキストのサイズが常にテキストをカバーするとは限らないことに注意してください。また、フォントが異なると、テキスト自体の周りにタイトな境界四角形 (マゼンタ) を配置することができません。(複数の推測を行いました。以下のコードは 1 つにすぎません。行はさまざまなフォント メトリック サイズを表示しようとしています)。
上記は、テキストアイテム継承のペイント機能の実験でしたQGraphicsTextItem
:
QGraphicsTextItem
を使用せずに、長方形の内側にテキストをペイントすることも試しました。同じことが起こります。
(Qt 4.7 - 5.x)
c++ - QTextEdit 単一の QTextCharFormat を更新
単一の文字の QTextCharFormat を更新しようとしています。しかし、それは適用されません:
出力:
何が欠けているか分かりますか?