qt - QGraphicsScene 中的 QListWidget 不滚动文本项
问题描述
我在 QGraphicsScene 中有一个 QListWidget。我在里面添加了带有 QLineEdit 的新项目。当 QListWidget 填充并且滚动条在滚动时处于活动状态时,文本不会滚动,当前项目表示会滚动。
完整代码 Git:代码
编辑:
我将 QCheckBox 包含在一个水平布局中,以说明我为什么需要该setItemWidget
功能。
解决方案
回答:
文本不会滚动,因为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);
}
然后,当您创建和插入 时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);
}
推荐阅读
- jquery - 检查屏幕 2 后,取消选中屏幕 1 上的所有选项
- java - Android - 对服务器的静态类方法调用
- python - Elastic-Search 滚动(扫描)到 Pandas DataFrame
- html - 从右到左显示块和内联词
- database - Db::getInstance()->ExecuteS 错误“必须仅与 select 一起使用”当我这样做时
- c++11 - 将内存地址包装为 std::atomic
- java - 带有元数据的 Response.ok
- javascript - 如何使用jquery在编辑案例中制作可编辑文本
- javascript - 使用 react js 的绝对文件路径
- c# - 通过 Postman 进行 HMAC 身份验证