問題タブ [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.
qt - QPlainTextEditでカーソルを移動してスクロールするときにscrollContentsBy(dx、dy)関数が呼び出されない理由
QPlaintTextEdit を派生させ、scrollContentsBy 関数をオーバーライドしました。これは、マウス ホイールまたはスクロールバーを使用する場合にのみ呼び出されます。矢印キーを使用してカーソルを移動し、それによってコンテンツをスクロールする場合、この関数は呼び出されません。
QTextEdit についても同じことを行いましたが、問題なく動作します (つまり、すべての状況で呼び出されます)。
この動作の理由は何ですか? 私が使用できる代替手段は何ですか?
注: これは関数のプロトタイプです
環境:
- ウィンドウズ7
- Qt 4.8
- VS 2008
更新: 次の代替手段はどれも機能していません。
- 値が変更されました
- スライダー移動
qt - QPlaintTextEdit を使用して固定幅の列ロガーを効率的に作成する方法は?
QPlainTextEdit を使用して Qt (4.8) でログ ウィンドウを作成したいと考えています。これは、 を使用することを意味しますappendPlainText
。そのログは、表示されるデータとは無関係に固定幅を持つ必要があるデータの列を表示する必要があります (データの最大サイズになります)。IOW 私は彼らがこのようなものを表示できるようにしたい:
上記の例でわかるように、各列には固定幅があります。たとえば、一部のデータが使用可能なスペースよりも小さい場合、次のデータはそれぞれの列の正確な開始点から始まります (直後ではなく)。これを Qt で効率的な方法で行う方法を知る必要があります。
ウェブでいくつかの調査を行った後、私が取ったいくつかの方法が不適切であることがわかりました. 最初は QString::args() を使用しています:
上記のコードにはいくつかの欠陥があります。まず、列のサイズを示す場所に「-」が設定されていない限り、デフォルトの表示構成は集中化されたデータです。(文書では、正の数は右揃えの値を与えると正式に述べられていますが、私のテストではそうではありませんでした。以下を参照してください) ただし、これにはバグがあり、制限があります。右揃えにすることができませんでした。最初arg
に左揃えのテキストを表示し、その後に続く他のすべてのargs
列幅の数値が正であっても、同様に左揃えのテキストを表示します。さらに、実際にはフォント スタイルがモノスペースの場合にのみ機能します。
私が発見した別の方法は、QTextStream を使用することです。
また
しかし、これは「複雑すぎる」ようです。のような解決策を期待していましたargs
。
別の方法はありませんか?
args
コードを使用した私のテストは次のとおりです。
qt - QPlainTextEdit ダブルクリック イベント
QDockWidget 内にある QPlainTextEdit でダブルクリック イベントをキャプチャする必要があります。
実際のコードでは、サイズ変更操作を処理するために QDockWidget にイベント フィルターをインストールし、ダブル クリック イベントを処理するために QPlainTextEdit にイベント フィルターをインストールしました。
しかし、QDockWidget では機能しますが、QPlainTextEdit のダブルクリック イベントをキャッチできません。
このコードでは、「ダブルクリック」というメッセージは表示されません。コードの何が問題なのですか?
qt4 - QTextEdid (または QPlainTextEdit) の文字の垂直方向の配置
QTextEdit/QPlainTextEdit に次の素敵なテーブルを書き込もうとしています:
しかし、そうすると、appendPlainText(QString)
文字が縦に整列しません。各文字の幅が異なるように見えるため、結果はほとんど混乱しており、テキストは左揃えになっています。
c++ - QPlainTextEdit でテキスト ブロックの編集を無効にするにはどうすればよいですか?
QPlainTextEdit に基づいてコンポーネントを作成しています。テキストの一部を読み取り専用にしたい (ただし、選択、ナビゲーション、クリップボードなどは許可する)。
キープレスイベントを検出して抑制することはできますが、これを行うには条件が必要です。さまざまなキーや組み合わせなどをチェックせずに編集をブロックする方法はありますか (プラットフォームごとに異なる可能性があります)。
c++ - QPlainTextEdit - ドキュメントを最後まで検索し、最初からもう一度検索します
現在のカーソルから最後までの文字列を QPlainTextEdit で検索したい。何も見つからない場合は、最初から検索を続けたいと思います。この段階でのみ、何も見つからない場合はメッセージが表示されます。これはコードです:
問題はラインsetTextCursor(cursor);
- この行がないと、検索は最初/最後から続行されません
- この行では、文字列が見つからない場合、カーソルがドキュメントの最初/最後に配置され、ユーザーのドキュメント内の現在の位置が失われることを除いて、すべて問題ありません。
ドキュメント内の文字列を検索し、見つからない場合は現在の位置を変更しない方法は?
アップデート
IAmInPLS のおかげで、コードは以下のようになります。verticalScrollBar の値保持を追加しました。それでも、以下によって生成されたものが見つからない場合、短いちらつきがあります。cursor.movePosition(reverse?QTextCursor::End:QTextCursor::Start);
どうすればそれを取り除くことができますか? プロの編集者のように見えるにはどうすればよいですか? それを検索するために別の非表示の QPlainTextEdit 要素を作成するという考えはありますか?
c++ - Qt は QPlainTextEdit のスクロール領域を別のものと一致するように設定します。
私は一生、これを行う方法を理解できません。
私は 2 つの QPlainTextEdits を持っています。
myTextEditmyTextEdit->document()->setPlainText(myText);
に水平スクロール バーが追加されました。ここで、他の textEdit が myTextEdit とまったく同じ量だけスクロールできるようにしたいと考えています。他のテキスト編集のスクロール領域内の幅を myTextEdit の幅と一致するように設定するにはどうすればよいですか?
ドキュメントの幅を同じにしたいのですが、myTextEdit->document()->size() は役に立ちません。誰でも助けることができますか?