上手。私はIDEに取り組んでいます。あなた方の何人かは多分それについての投稿を見ました。デモが見つからず、ドキュメントが役に立たないため、QTreeWidgetとQtreeWidgetItemがどのように機能するかわかりません。さて、私がやろうとしているのは、プロジェクトファイルを開いて、プロジェクトのすべてのファイルをツリーに含めるIDEです。(プロジェクトファイル内のファイルは、#include "filename"を実行することで含まれます)。どうすればいいですか?次に、ファイルをクリックしてタブで開きます(これは別の質問でした)。したがって、この部分では、ファイルクリックを実行する方法の例が必要です。:)
1 に答える
簡単な解決策は、QTreeWidgetItem を直接使用することです。プロジェクト内のすべてのファイルに対して、QTreeWidgetItem のインスタンスを作成します。
QTreeWidgetItem *file = new QTreeWidgetItem(browserWidget);
file->setText(0, filename);
「filename」は、ファイルの名前を含む文字列です。プロジェクト ファイルを解析して、「#include」で始まる行を探して、ファイル名を取得できます。
新しい項目のコンストラクターで別の QTreeWidgetItem を渡すことにより、新しい項目を別の項目の子にします。そうすれば、ディレクトリ構造を作成できます。
ファイルを開くには、QTreeWidget のシグナル「itemDoubleClicked」に接続できます。クリックされたウィジェット項目へのポインターを取得します。「text()」を呼び出すと、ファイル名が取得されます。ディレクトリ構造がある場合は、すべての親ウィジェット アイテムに対してもこれを行う必要があります。文字列を連結すると、ファイルへのパスが得られます。
この例はQt Docsにあります (ファイル settingstree.cpp を参照) 。
IDE がシンプルである限り、これで十分です。より柔軟で「オブジェクト指向」のソリューションは、QTreeWidgetItem のサブクラスを作成することです。いくつかのメソッドを上書きする必要があります。おそらく読み取り専用アクセスのみが必要なので、Qt Docsで説明されている 4 つの方法で十分です。