我在QGraphicsScene中有一个QListWidget。我在里面用QLineEdit添加新项目。当QListWidget填充并且滚动条在滚动条上处于活动状态时,文本不会滚动,当前项目表示会滚动。
完整代码Git:code
编辑:
我在水平布局中包含了QCheckBox,以显示我需要setItemWidget
函数的原因。
答案 0 :(得分:1)
<强>答案:强>
文字无法滚动,因为setItemWidget是:
void QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget)
设置要在给定项目中显示的窗口小部件。此功能仅用于显示静态内容 列表小部件项。如果要显示自定义动态内容或 实现自定义编辑器小部件,使用QListView和子类 相反,QItemDelegate。
它与QGraphicsScene
无关。
<强>解决方案:强>
如果您想使文字可编辑。它比你自定义QItemDelegate
简单得多。
首先,使用编辑触发器设置列表小部件,告诉小部件何时开始编辑。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
ui->listWidget->setEditTriggers(QAbstractItemView::DoubleClicked);
}
然后当你创建&amp;插入QListWidgetItem
,确保每个项目都可以编辑。
※将整个on_pushButton_clicked
功能替换为以下内容:
void MainWindow::on_pushButton_clicked()
{
QListWidgetItem* item = new QListWidgetItem("name");
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui->listWidget->insertItem(ui->listWidget->currentRow() + 1, item);
}