C++ 当使用QT\u比例因子进行缩放时,如何防止QGraphicscene中的QListView在滚动区域外绘制

C++ 当使用QT\u比例因子进行缩放时,如何防止QGraphicscene中的QListView在滚动区域外绘制,c++,qt,C++,Qt,当我在QGraphicscene中显示QListWidget或QListView时,如果需要滚动条,则每个项目的文本都会在小部件边界之外绘制。仅当我使用QT_SCALE_FACTOR缩放应用程序时才会发生这种情况。是否有一种方法可以防止列表小部件/列表视图项目显示在滚动区域之外,而不显式设置项目的宽度?如果我设置宽度,我会丢失一些文本。我还尝试过设置GraphicsItemFlag QGraphicsItem::ItemClipsToShape。这使得悬垂限制在外部小部件的宽度内,但我想完全防止

当我在QGraphicscene中显示QListWidget或QListView时,如果需要滚动条,则每个项目的文本都会在小部件边界之外绘制。仅当我使用QT_SCALE_FACTOR缩放应用程序时才会发生这种情况。是否有一种方法可以防止列表小部件/列表视图项目显示在滚动区域之外,而不显式设置项目的宽度?如果我设置宽度,我会丢失一些文本。我还尝试过设置GraphicsItemFlag QGraphicsItem::ItemClipsToShape。这使得悬垂限制在外部小部件的宽度内,但我想完全防止悬垂

QGraphicscene中的QListWidget

QWidget *w = new QWidget();
QVBoxLayout *l = new QVBoxLayout(w);
lw = new QListWidget();
l->addWidget(lw);
QGraphicsProxyWidget *pw = scene()->addWidget(w);
pw->resize(200,300);

for(int i = 0; i < 25; i++) {
    QListWidgetItem *litem = new QListWidgetItem("Text text text text   text text text");
    lw->insertItem(0, litem);
}

QWidget*w=newqwidget();
QVBoxLayout*l=新的QVBoxLayout(w);
lw=新的QListWidget();
l->addWidget(lw);
QGraphicsProxyWidget*pw=scene()->addWidget(w);
pw->resize(200300);
对于(int i=0;i<25;i++){
QListWidgetItem*litem=新的QListWidgetItem(“文本”);
lw->插入项(0,litem);
}

将缓存模式设置为QGraphicsItem::DeviceCoordinateCache可防止listview/listwidget文本显示在小部件的边界之外。文本确实变得有点模糊,但用户仍然可以阅读。感谢您的回复

pw->setCacheMode(QGraphicsItem::DeviceCoordinateCache);

这是一个长期的尝试,但有一个松散相似的Qt问题报告,其解决办法将是改变QGraphicsProxyWidget缓存模式;(至少值得一试)。将缓存模式设置为QGraphicsItem::DeviceCoordinateCache确实会将文本保留在滚动区域内,但会使文本有点模糊,更难阅读。