問題タブ [qplaintextedit]

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 投票する
2 に答える
5969 参照

qt - QPlainTextEdit 履歴を行単位で切り捨てる

主な部分がQPlainTextEditである GUI アプリケーションがあります。アプリケーションのログを表示するために使用され、関連するテキストは行ごとに無限に大きくなります。

アプリケーションは非常に長時間実行することを目的としているため、このログに割り当てられるメモリを制限する必要があります。したがって、到達したときに履歴が切り捨てられることを確認するmaxNumLinesまたはmaxNumCharactersパラメーターが必要です。つまり、新しい行が追加されると、見出し行が削除されます (別名ログローテーション)。

これを達成するために、関数を見つけました

したがって、このテストされていないコードのようなものは、おそらくうまくいくでしょう:

これは、から最初の行を削除する方法QPlainTextEditですか? おそらく、このタスクにより適した他のQt Text GUI要素がありますか(最大行数を設定し、リストの先頭で切り捨てQStringListますerase(0))。

それとも QPlainTextEdit は最終的に、関連付けられた QString のサイズの上限を最終的に実装しますか?

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 に答える
238 参照

qt - Adding end line marker in QPlainTextEdit

に80文字をマークする縦線を追加したいと思いQPlainTextEditます。ドキュメントを見ましたが、ドキュメントに何も表示されませんでした。どういうわけか自分でペイントする必要がありますか?

0 投票する
2 に答える
4967 参照

layout - Qt formlayoutがqplaintexteditを垂直に展開しない

QFormLayoutに追加されたときにQPlainTextEditウィジェットが垂直方向にサイズ変更されない理由がわかりません。以下のコードでは、テキスト フィールドは水平方向に正しく拡大されますが、垂直方向には拡大されません。

誰でもこの動作を説明して解決策を提供できますか? 私が知っているすべてのトリックを試してみましたが、役に立ちませんでした。

垂直方向にサイズ変更されていない QPlainTextEdit ウィジェットの例を次に示します。 QFormLayout に QPlainTextEdit が追加されましたが、垂直方向のサイズは変更されません

これは、PyQt 4.5.2 および Python 32 ビット 2.6 を使用する Windows 7 上にあります。

ありがとう。

0 投票する
4 に答える
62546 参照

c++ - 改行を追加せずにQPlainTextEditにテキストを追加し、下部をスクロールし続けるにはどうすればよいですか?

テキストに改行を追加せずにテキストを追加する必要がありQPlainTextEditますが、どちらの方法appendPlainText()でもappendHtml()実際には新しい段落が追加されます。

私はそれを手動で行うことができますQTextCursor

それは機能しますが、追加する前にスクロールが一番下にあった場合は、一番下にスクロールし続ける必要があります。

Qtのソースからロジックをコピーしようとしましたが、実際にはQPlainTextEditPrivateクラスが使用されており、それなしでは同じことを行う方法が見つからないため、それに固執しました。たとえば、にメソッドverticalOffset()が表示されませんQPlainTextEdit

実際、これらのソースには(少なくとも一見すると)多くの奇妙なものが含まれており、これを実装する方法がわかりません。

ソースコードは次のとおりです:http append()//code.qt.io/cgit/qt/qt.git/tree/src/gui/widgets/qplaintextedit.cpp#n2763

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

qt - QTextEditシフトタブの間違った動作

shift + tabは、QTextEdit/QPlainTextEditのタブとして動作します。

良い解決策がない一般的な問題のように見えます。

タブがインデントレベルを上げ、Shift-Tabがインデントレベルを下げるときに、この機能を有効にする「古典的な」方法はありますか?

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

c++ - QPlainTextEdit - 何行含めることができますか?

オーバーフローして垂直スクロールバーが表示される前に、QPlainTextEdit コントロール (特定のサイズ) に収まる行数を何らかの方法で計算することは可能ですか?

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

qt - Qtテキストエディットのスムーズなスクロール

Qtでは、テキスト領域で「スムーズなスクロール」を行うことはできますか?QPlainTextEditつまり、編集可能なテキスト領域に使用する「コードエディタ」と呼ばれるこのQtデモがあります。エリアをスクロールすると、常に一度に1行全体がジャンプします。つまり、一番上の行が常に完全に表示されます。

たとえば、HTMLでは、テキスト領域はコンテンツを「スムーズに」スクロールします。つまり、1ピクセルだけでもコンテンツをスクロールして、上の行を部分的に非表示にすることができます。

Qtでこのような動作をすることは可能ですか?おそらく別のウィジェットを使用することによって?

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

qt - QPainTextEdit波線を追加

私は、OracleとDB2のSQLプロシージャを作成するための優れたツールである小さなSQLIDEアプリに取り組んでいます。GUIベースとしてQt4を使用しています。それでも、My SQL IDEにインスタント文法チェック機能を追加したいのですが、VS2010やEclipseと同じように、SQLコードの下に文法エラーのあるウェーブラインを書き込みます。しかし、私は本当にこの関数をどのように扱うかを知りません。ドキュメント編集クラスにQPlainTextEditを使用しました。ヒントやヒントをいただければ幸いです。お時間をいただきありがとうございます!

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

qt - QTextCursor と beginEditBlock

QPlainTextEdit に、すべての行が 10 個のスペースで始まるテキストがあります。

次に、いくつかの行を選択し、ループで選択したすべての行から最初の 2 つのスペースを削除します。

問題は、上記のコードが最後に選択された行を「損傷」することです-まるである種の行末マーカーを削除したかのように-最後の行の終わりにジャンプしたいとき、カーソルはその下の行に移動します。 1番目と2番目のキャラクター。編集後、選択範囲でさえ正しく表示されません。最後の行を除くすべての行で選択インジケーターがウィンドウの右端まで拡張され、最後の行のインジケーターは行と同じ幅しかありません。

削除するbeginEditBlock()と、endEditBlock()すべて正常に動作します。

なぜこれが起こっているのか誰か知っていますか?