[英]Converting QModelIndex to QString
有沒有辦法將QModelIndex轉換為QString? 這背后的主要目標是我想使用動態生成的QListView-Items的內容。
QFileSystemModel *foolist = new QFileSystemModel;
foolist->setRootPath(QDir::rootPath());
foolistView->setModel(foolist);
[...]
QMessageBox bar;
QString foolist_selectedtext = foolistView->selectionModel()->selectedIndexes();
bar.setText(foolist_selectedtext);
bar.exec;
這甚至是獲取當前所選項目的正確方法嗎?
提前致謝!
不,是簡短的回答。 QModelIndex
是模型的索引 - 而不是該索引中模型中保存的數據。 您需要在模型上調用data( const QModelIndex& index, int role = Qt::DisplayRole) const
, index
為QModelIndex。 如果您只是處理文本,DislayRole應該足夠了。
是的,您獲取所選項目的方式是正確的,但根據您的選擇模式,它可能會返回多個QModelIndex
(在QModelIndexList
)。
QModelIndex是某些數據結構的標識符。 您應該閱讀QModelIndex文檔。 有一個QVariant data(int role)
方法。 在大多數情況下,您需要使用Qt :: DisplayRole來獲取所選的項目文本。 請注意,selectIndexes()也返回QModelIndex列表。 它可能是空的或包含多個項目。 如果你想得到(即以逗號分隔)所有選定索引的文本,你應該這樣做:
QModelIndexList selectedIndexes = foolistView->selectionModel()->selectedIndexes();
QStringList selectedTexts;
foreach(const QModelIndex &idx, selectedIndexes)
{
selectedTexts << idx.data(Qt::DisplayRole).toString();
}
bar.setText(selectedTexts.join(", "));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.