2009-07-28 13 views
5

私はサードパーティのQListViewオブジェクトへのポインタを持っています。これは単純にテキストの行を表示しています。その文字列を保持する最良の方法は何ですか?QListViewからテキストを取得する

答えて

4

モデル、アクセスをQListViewし、アイテムを保持しています。あなたはこのような何かを行うことができます。

QListView* view ; // The view of interest 

QAbstractItemModel* model = view->model() ; 
QStringList strings ; 
for (int i = 0 ; i < model->rowCount() ; ++i) 
{ 
    // Get item at row i, col 0. 
    strings << model->index(i, 0).data(Qt::DisplayRole).toString() ; 
} 

はまた、あなたはテキストが書き込まれたときに更新された文字列を取得したいと思い言及 - あなたは、文字列を抽出し、あなたの関数にモデルの dataChanged()信号を接続することにより、これを行うことができます。 QAbstractItemModel::dataChanged()を参照してください。

+0

これは正しいですか? QObject :: connect(model、SIGNAL(dataChanged(QModelIndex、QModelIndex))、client_、SLOT(onText())) ここで、client_はQObjectから派生したクラスであり、onTextはパブリックスロットの下で宣言されています。 –

+0

はい、これがアイデアです。 onText()のシグネチャもdataChanged()のシグネチャと一致する場合は、リスト全体ではなく、データが変更されたインデックスだけをループすることができます。 – swongu

+0

これは私の行です: QObject :: connect(model、SIGNAL(dataChanged(const QModelIndex、const QModelIndex))、client_、SLOT(onText(const QModelIndex、const QModelIndex))); それはtrueを返しますが、私は "onText"関数に入れた勘を見ません。何か案は? –

3

QListViewオブジェクトのルートQModelIndexを問い合わせて、それを使用して、兄弟/子メソッドを使用してさまざまなエントリを反復処理できます。各インデックスに関連付けられたテキストにアクセスするには、Qt :: DisplayRoleとして指定されたロールを持つインデックスのdataメソッドを呼び出します。詳細については

は、次のドキュメントを参照してください。

QAbstractItemView - 親クラスがQListView::model()によって

QModelIndex

+0

とhttp://doc.trolltech.com/4.5/qvariant.html#toString –

+0

ありがとうございました。新しいテキストが書き込まれたときにこれを行うために接続できるスロットはありますか? –

関連する問題