QListWidget внутри QGraphicsScene не прокручивает текстовые элементы
У меня есть QListWidget внутри QGraphicsScene. Я добавляю новые предметы с QLineEdit внутри. Когда заливка QListWidget активна и полосы прокрутки активны, текст не прокручивается, а текущее представление элемента.
Полный код Git: код
РЕДАКТИРОВАТЬ:
Я включил QCheckBox в горизонтальный макет, чтобы показать, почему мне нужно setItemWidget
функция.
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);
}
Затем, когда вы создаете и вставляете QListWidgetItem
Убедитесь, что каждый элемент доступен для редактирования.
Lace заменить тебя целиком 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);
}