假设我需要显示一个项目列表。每个项目都包含一个QPushButton、一个图像和一些文本。当用户点击按钮时,应该会发生一些事情(即我需要得到信号)。在Qt中实现这一点的正确方法是什么?
经过一些阅读,我明白如果我使用QListWidget和QListWidgetItem,这是可以实现的。我可以根据需要划分每个QListWidgetItem的子类,并在list小部件中设置它们。
然而,我也读到一种更合适的方法(模型视图方法)是结合使用QlistView和QItemDelegate。但如果我使用的是QItemDelegate,我似乎只能绘制小部件。如何获取按钮事件?
对于这篇很大的帖子,我很抱歉。我对何时使用QListWidget / QListView的整个概念有些困惑。
发布于 2011-05-15 08:31:44
QListWidget本质上是QListView的自定义版本,专为列表小部件的标准情况而设计,当您所做的只是在列表中呈现图像或文本项,并且与底层模型的关系很简单时。
使用QListWidget和它的相关类QListWidgetItem,你可以很容易地插入和删除项目。但是如果您要插入QPushButtons,那么就不能使用它,所以您也可以只使用QListView及其(继承的)方法来设置给定索引的小部件。
至于信号,因为您将创建QPushButton,所以只需使用
QObject::connect(my_button, SIGNAL(clicked()),...) 来处理这件事。
发布于 2013-11-29 13:37:25
与Matt的答案不同的是,正如qt-project.org:http://qt-project.org/forums/viewthread/17953上的这篇文章所指出的那样,你似乎可以在项目上使用自己的小部件。
如果您只有几个项目要显示,并且对编写模型类的麻烦不感兴趣,这可能会很有用。
https://stackoverflow.com/questions/6003086
复制相似问题