Câu hỏi: cách tìm mục phụ, trong QTreeView
nạp QAbstractItemModel
mô hình với phương pháp model->match()
?HowTo tìm Subitem trong lớp QAbstractItemModel và QTreeView?
Sự cố: model->match()
không thể tìm thấy mục phụ, wtf ?!
Dưới đây là ví dụ:
alt text http://www.freeimagehosting.net/uploads/179eee87e3.png
Như bạn có thể thấy từ hình ảnh, tôi đang cố gắng để mở rộng Layouts
tiểu mục với mã này:
void Dialog::restoreState(void)
{
// get list
QSettings settings("settings.ini", QSettings::IniFormat);
settings.beginGroup("MainWindow");
QStringList List = settings.value("ExpandedItems").toStringList();
settings.endGroup();
foreach (QString item, List)
{
if (item.contains('|'))
item = item.split('|').last();
// search `item` text in model
QModelIndexList Items = model->match(model->index(0, 0), Qt::DisplayRole, QVariant::fromValue(item));
if (!Items.isEmpty())
{
// Information: with this code, expands ONLY first level in QTreeView
view->setExpanded(Items.first(), true);
}
}
}
đâu settings.ini
tập tin chứa :
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
PS: các mục gốc mở rộng thành công khi bắt đầu!
Nếu bạn đang sử dụng mô hình mục riêng của bạn, bạn chỉ có thể reimplement phương pháp phù hợp để phù hợp với nhu cầu của bạn (như tài liệu nói) –
@Kamil Klimek Ví dụ, tôi mua một chiếc xe hơi, tại sao tôi phải cài đặt thứ năm bánh xe, nếu xe có thể chạy chỉ với bốn bánh xe? Các câu hỏi khác, nếu phương pháp này thực sự làm việc như tài liệu nói ... – mosg
Vâng, như không có gì về phương pháp phù hợp là đệ quy, tôi gues nó không phải là, bởi vì nó được thực hiện trong QAbstractItemModel, phù thủy không biết bất cứ điều gì về bất kỳ cây (hoặc thứ bậc khác). Đó là lý do tại sao bạn phải thực hiện lại phương thức đối sánh nếu bạn muốn làm cho nó trở nên đệ quy. –