如何在Qt中将QListView / QListWidget添加到QGraphicsScene?

时间:2011-10-17 12:24:52

标签: qt

如何将QListView / QListWidget添加到QGraphicsScene并将小部件添加到ListView 当我尝试将QLisView添加到QGraphicsScene时,鼠标滚动影响来自场景。 我想在QgraphicsScene中添加QPushButtons作为ListView项目,带有鼠标滚动效果。 感谢。

2 个答案:

答案 0 :(得分:1)

QGraphicsProxyWidget怎么样?

QListView *listView = new QListView;
QGraphicsProxyWidget *proxy = scene.addWidget(listView);

然后(或之前)您可以使用您想要的任何内容填充列表。可以使用QPushButtonsetIndexWidget()添加到列表中。您也可以重新考虑拥有QListView的整个想法,并尝试使用QScrollArea和包含按钮的线性布局。这需要更多的逻辑来组织滚动区域中的项目,但它应该更轻量级QListView使用自定义小部件。

答案 1 :(得分:0)

我的第二个答案是:ProxyWidget就是答案。

这是我的工作代码, 部首:

class CenterScreen{
private:
    QListWidget* nameListWidget;
    QGraphicsProxyWidget* nameProxyWidget;
...

C ++来源:

void CenterScreen::addListView()
{
    QGraphicsScene* scene = ui.centerGraphicsView->scene();
    nameListWidget = new QListWidget();
    nameProxyWidget = scene->addWidget(nameListWidget);
...
    nameProxyWidget->hide();    // you can control your widget as you like