問題タブ [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.

0 投票する
1 に答える
2981 参照

qt - 必要なすべての文字列を見つけて、QPlainTextEdit::setExtraSelections() で選択します

QPlainTextEdit ウィジェットで見つかったすべての文字列を強調表示しようとしていますが、 find() は最初の結果のみを返します。次のコードがうまくいきません。なぜですか?

(textview は QPlainTextEdit から派生したクラスです)

QSyntaxHighlighter を使用して色を設定するように言わないでください。違います。

0 投票する
1 に答える
455 参照

python - 2つのqtextedits間、またはqtexteditとqscintilla間でコンテンツを元に戻す履歴と同期する

私はpyqt4を使用してブログエディタを書いています。私の問題はこれです。wysiwygエディタータブとhtmlコードエディタータブがあります。一方で行われた変更は、もう一方にも反映されるはずです。1つのオプションは、qtexteditでテキストが変更されるたびにsetHtml関数とtoHtml関数を使用することです。ただし、このアプローチの問題は、qtexteditでsetHtmlを使用すると、以前の編集取り消し履歴がすべて失われることです。textchanged信号で自分の履歴を維持しようとすると、大量のメモリが使用されます。文を入力すると、textchangedはすべての文字に対して通知され、undoは文字ごとに通知されます。

2つのqtextedit間で同じqtextdocumentを共有しようとしましたが、強調表示がqtextdocumentにリンクされているため、両方のqtexteditに適用されるため失敗しました。

もう1つのオプションは、ユーザーがwysiwygエディターウィンドウで作業しているときに何もしないことです。ユーザーがhtmlコードエディターで編集を行うと、ユーザーが編集を完了するまで待ちます。編集が完了すると、編集の差分が見つかり、wysiwygエディターのqtextdocumentで対応する編集変更を行います。これは達成可能ですか?qtextdocumentでそのような変更を行うにはどうすればよいですか?私が気付いていないもっと簡単な方法はありますか?

助けてください。

0 投票する
1 に答える
1567 参照

qt - QSyntaxHighlighter でテキストを非表示にする

問題:タグを追加したテキスト用のテキスト編集ウィジェットを実装したいと考えています。ユーザーの気を散らさないように、場合によってはタグを非表示にしたいと思います。

環境:私はPyQtと を使用QPlainTextWidgetしてQSyntaxHighlighterいます。

アプローチ:自分の要件に一致する文字列をQSyntaxHighlighter設定できます。サイズ、色などのすべてのフォント プロパティが表示されますが、テキストを非表示にしたり、サイズをゼロにするオプションが見つかりませんでした。QTextCharFormatQTextCharFormat

タグを削除したり置き換えたりしたくありません。これにより、より多くのコードが導入されるためです (コピーにはタグを含める必要がありQSyntaxHighlighter、タグに従って残りのテキストをフォーマットするために使用することはできません)。

更新:これまでのところ、醜いハックを見つけました。QTextFormat::FontLetterSpacingを小さな値に設定することにより、テキストが消費するスペースがますます少なくなります。透明色と組み合わせることで、テキストは見えないようなものになります。

問題:私のテストでは、文字間隔が 0.016 % までしか機能しませんでした。間隔の下は 100% にリセットされます。

0 投票する
1 に答える
5127 参照

c++ - QTextDocument::drawContentsは96dpiでのみレンダリングされます

QPrinterとQPainterを使用して高解像度(1200 dpi)のPDFドキュメントを作成しています。QTextDocument::drawContentsを使用して同じ解像度でテキストを描画しようとしています。QTextDocumentを使用する理由は、ドキュメントに多くのテーブルとフォーマットされたテキストを含める必要があるためです。

私の問題は、QTextDocument :: drawContentsが常に画面解像度(私の場合は96 dpi)でテキストを挿入することです。私がこれまでに見つけたすべての解決策は、正しいサイズを達成するためにテキストをスケーリングすることを提案しています。ただし、これによりテキストの品質が低下し、私には余裕がありません。

私の質問:QTextDocumentのコンテンツを高解像度で描画する方法はありますか?

以下のコードは、2行のテキストを含むPDFファイルを作成します。1つはQPainter :: drawTextを使用して描画され、もう1つはQTextDocument::drawContentsを使用して描画されます。スケーリングに起因する低品質の問題を強調するために、Arial8ptフォントを使用しました。

0 投票する
1 に答える
8099 参照

qt - QTextEdit から行/ブロックを削除します

からのブロック/行の削除に苦労していQTextEditます。以下のコードは(?)動作するはずですが、私には不明な理由で無限ループに陥ります。が編集されている疑いがnext()あり、previous()歓迎されません。QTextDocument

QTextDocument::findBlockByNumber()上記と同じ方法でブロックの使用と削除を繰り返してもうまくいきませんでした。

すべてのブロックを繰り返し処理し、必要に応じてそれらを削除する方法について、誰かが正しい方向に向けてくれれば幸いです。

PS
私の特定のケースでは、1ブロック= 1行です。
Qt 4.6.2、Ubuntu 10.04 x64

0 投票する
1 に答える
140 参照

c++ - QTextBlock のフォントを決定する方法

ユーザーがランダムなテキストを に貼り付けたとしますQTextEdit。テキストのフォントをどのように判断しますか。たとえば、中国語です。

QTextCharFormatブロックの を取得しようとしました。しかし、情報が不足しているようです。クエリを実行fontFamily()すると、空の文字列が返されます。

-も使用しようとしましたQTextLayoutが、特定のテキスト ブロックではなく、ドキュメントのデフォルト レイアウトが得られるようです。

ご指摘ありがとうございます。

0 投票する
1 に答える
1027 参照

c++ - QPlainTextEdit が std::bad_alloc を投げる

一部のデータに対して最小二乗法を実行するプログラムがあります。このプロシージャは別のスレッドで実行され、ダイアログ ボックスから制御されます。このダイアログ ボックスには、フィッティングの更新と最終レポートを表示する QPlainTextEdit があります。

ダイアログは Qt Designer で作成され、コードは QtCreator で実行され、私の Qt バージョンは 4.8.1 です。

私が直面している問題は、やや不安定です。手順を初めて実行するときは、すべて問題ありません。その後、もう一度実行すると、プログラムがクラッシュしてメッセージが表示されることがあります

'std::bad_alloc' what() のインスタンスをスローした後に呼び出された終了: std::bad_alloc プログラムが予期せず終了しました。

QPlainTextEdit の clear() メソッドの呼び出しの問題を追跡しました。ここにいくつかのコードがあります。

txtInfoQPlainTextEdit オブジェクトです。オブジェクトが作成されたときに を呼び出してtxtInfo->clear()、空のテキスト編集を表示します。「実行」ツール ボタンをクリックすると、そのデフォルト スロットが新しいスレッドを開始する実行シグナルを発します。QPlainTextEdit は、txtInfo終了するまでこのスレッドで更新されます (実際、スレッドは、メイン アプリケーションでキャッチされるシグナルを発し、次に を呼び出しますUpdateDisplay)。

もう一度実行ボタンをクリックすると、クラッシュとエラーが発生します。txtInfo->clear()txtInfo->document()->clear()、 、txtInfo->setPlainText("")または byを置き換えるとtxtInfo->document()->setPlainText("")、問題は同じです (2 回目の実行でクラッシュします)。頻繁ではありませんが、時折、クラッシュする前に数回 (10 回程度) 実行できます。

最後に、行をコメント アウトすると、txtInfo->clear()実行した回数だけルーチンを実行できます (あるテストでは、約 80 回実行した後に疲れました)。

私の唯一の(ほぼランダムな)推測は、問題がスレッドからの更新に何らかの形で関連していることです(キャッチされたシグナルを発し、UpdateDisplay関数を呼び出すだけです)。私がそう思う理由は、シグナルをコメントアウトして、UpdateDisplay偽の情報で呼び出すための新しいボタンを作成すれば、すべて問題ないからです。

問題のある行の前のAqApp->processEvents()は効果がありません。

私はここで立ち往生しています。どんなアイデアでも大歓迎です。たとえば、clear()メソッドの呼び出しに問題がないことを確認するために実行できるテストはありますか?

0 投票する
1 に答える
753 参照

qt - Qt - 複数の QTextBlock インライン

QTextDocument の複数の QTextBlocks を 1 つの水平線に配置することは可能ですか?

どのテキストブロックがクリックされたかを知る必要があり、特定のブロックの ID を保持するために使用できるメソッド setUserState(int) があるため、QTextBlock を使用すると便利です。より良いアプローチはありますか?

0 投票する
1 に答える
406 参照

python - Python / C ++、PyQt4 / Qt4:QTextTableのセルに複数行のテキストを挿入する方法

PyQt4を使用してodtドキュメントを作成しようとしています。このドキュメントには、セルに複数行のテキストを挿入することが含まれます。私のサンプルコード:

「1行目」と「2行目」を同じセルに入れたいのですが、改行のために異なるセルにあります。これも上記のコードと同じ効果がありました。

0 投票する
1 に答える
1602 参照

c++ - Qt4/PyQt4-QTextDocumentのデフォルトフォントを設定できません

私のコードは次のようなものです:

出力の「サンプルテキスト」は、コンピュータでは「TimesNewRoman」ではなく「Sans」のままです。コンピュータに「TimesNewRoman」フォントがあることを確認しました。これはバグのようです。PyQtを使用しています。 v4.9.5。

編集:私はUbuntu12.04を使用しています。次のコードが機能するため、PyQt4がフォントを見つけることができると確信しています。


odt / odt形式で保存する場合、すべてのフォーマットがサポートされているわけではないようですが、PDFに印刷する場合はすべてが期待どおりに機能します。

setDefaultfontsとsetColumnWidthConstraintsはsample.pdfに影響しますが、sample.odtには影響しません。