0

上手。私はIDEに取り組んでいます。あなた方の何人かは多分それについての投稿を見ました。デモが見つからず、ドキュメントが役に立たないため、QTreeWidgetとQtreeWidgetItemがどのように機能するかわかりません。さて、私がやろうとしているのは、プロジェクトファイルを開いて、プロジェクトのすべてのファイルをツリーに含めるIDEです。(プロジェクトファイル内のファイルは、#include "filename"を実行することで含まれます)。どうすればいいですか?次に、ファイルをクリックしてタブで開きます(これは別の質問でした)。したがって、この部分では、ファイルクリックを実行する方法の例が必要です。:)

4

1 に答える 1

2

簡単な解決策は、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 つの方法で十分です。

于 2011-03-03T07:46:53.483 に答える