1

你好..

我想在 symbian OS 的 QT 中动态地将元素添加到 listview,我有一组与 listview 关联的委托方法。

如果我静态添加元素,则控件将委托给方法,并且视图是完美的。

但是如果我动态添加,控制权根本不会交给委托方法。

我不知道该怎么做。在这里放一些示例代码,我如何添加元素。

这就是我设置视图的方式,

 MylistView = new QListView();

 QDesktopWidget* desktopWidget = QApplication::desktop();
 QRect clientRect = desktopWidget->geometry();

        MylistView->setMinimumSize(QSize(clientRect.width()-7,clientRect.height()-1));

     MylistView->setViewMode(QListView::ListMode);
     MylistView->setMovement(QListView::Free);
     MylistView->setItemDelegate(new ItemDeligate(MylistView));
     MylistView->setSelectionMode(QAbstractItemView::SingleSelection);
     bool val =GreenPixmap.load(":/new/prefix1/temp/test.png");

     ListModel = new QStandardItemModel();
     ListModel->appendColumn(ItemList);

     MylistView->setModel(ListModel); 
     Listlayout.addWidget(MylistView);
     Listlayout.addWidget(MylistView);
     this->setLayout(&Listlayout);
     AddItemMenu = new QAction("Add",this);                  
     menuBar()->addAction(AddItemMenu);      
     val = connect(AddItemMenu,SIGNAL(triggered()),this,SLOT(addItem()));

这就是我在单击事件发生时动态添加的方式(即动态添加项目)

    QStandardItem *Items = new QStandardItem(QIcon(GreenPixmap),"Avatar");
        Items->setData("WAKE UP",ItemDeligate::SubTextRole);
        ItemList.append(Items);

        ListModel->appendColumn(ItemList);

请建议我,我在添加元素时犯了什么错误

4

1 回答 1

3

我刚刚在我的应用程序中做了这个简单的例子,它正在工作,也许它会给你一个提示:

QStandardItem* Items = new QStandardItem("Avatar");
QStandardItemModel* ListModel = new QStandardItemModel();
ListModel->appendRow(Items);

listView->setModel(ListModel);

总之,您应该在模型上简单地附加一行!它应该可以解决您的问题!

如果我错过了什么,请告诉我!

于 2010-02-23T11:13:24.543 回答