Mah*_*san 19 qt qlistwidget qlistview qitemdelegate
假设我需要显示一个项目列表.每个项目都包含一个QPushButton图像和一些文本.当用户点击按钮时会发生某些事情(即我需要获取信号).在Qt中实现这个的正确方法是什么?
经过一些阅读,我明白如果我使用QListWidget和QListWidgetItem,这可以实现.我可以根据我的需要对每个QListWidgetItem进行子类化,并在列表小部件中设置它们.
但是,我还读到一个更合适的方法(MOdel View方法)是使用QlistView和QItemDelegate.但如果我使用QItemDelegate,似乎我只能绘制小部件.如何获得按钮事件?
对不起这篇巨大的帖子.我对何时使用QListWidget/QListView的整个概念感到困惑.
Mat*_*ips 16
QListWidget本质上是一个定制版本QListView,专为列表小部件的标准情况而设计,当你所做的只是在列表中呈现图像或文本项目时,与底层模型的关系很简单.
使用QListWidget及其相关类,QListWidgetItem您可以非常容易地插入和移除项目.但是如果你正在插入QPushButtons,那么就不能使用它,所以你也可以使用QListView它的(继承的)方法为给定的索引设置小部件.
至于信号,因为你将创建QPushButtons,只需使用
QObject::connect(my_button, SIGNAL(clicked()),...)
Run Code Online (Sandbox Code Playgroud)
处理这个问题.