簡體   English   中英

將QModelIndex轉換為QString

[英]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;

這甚至是獲取當前所選項目的正確方法嗎?

提前致謝!

foolistView->selectionModel()->selectedIndexes();

發回QModelIndex的QList(如果您在QAbstractItemView :: SingleSelection中查看,則只有一個)

QModelIndex的數據方法返回與該索引的值對應的QVariant。

您可以通過調用toString來獲取此QVariant的字符串值。

不,是簡短的回答。 QModelIndex是模型的索引 - 而不是該索引中模型中保存的數據。 您需要在模型上調用data( const QModelIndex& index, int role = Qt::DisplayRole) constindex為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM