创建自定义Qt小部件或实现现有小部件?

时间:2012-01-03 00:08:23

标签: qt qwidget qlistwidget qtreewidget custom-widgets

所以我正在努力研究如何设计我的线框。它本质上只是两个QScrollAreas,一个在另一个之上,每个都有一个标题(和标题内的按钮)。

在滚动区域的一个设计中,我想要有类似于QListWidgetItems列表的项目,但是它们左侧有一个小图像,右侧有描述

在滚动区域的另一个设计上,我想要只填充颜色或图案/图像的矩形。它们都需要可选择并发出点击信号。

我应该采用Class方法,并创建一个新类来充当自定义小部件吗?实现QWidget,并计算应放置所有内容的位置,更改鼠标事件的背景颜色/不透明度等?或者我应该采取另一种方法吗?从我所读到的,创建自定义小部件是一个绝对的痛苦。

下面是我想要设计的线框 - 是否有任何可用的工作?如果没有,我该如何设计这些?我想过使用几个QListWidgets或QTreeWidgets,但它们无法实现我想要的一切。

Wireframes of custom "widgets"

2 个答案:

答案 0 :(得分:1)

我选择采取不同的方法。而不是列表或QScrollArea,我只是采取QGraphicsView并将自己的对象绘制到其中。我需要它来处理更多的交互(左右点击,里面的小按钮等)。当我更好地理解它时,我可以将它实现到QListView中,但是现在,这将有效。

答案 1 :(得分:0)

我认为您可以创建自己的基于QWidget的控件。对于标题部分只需拖动标签和按钮,对于其余部分,您可以使用带有自定义单元格的QListWidget或QListView