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);
}
Другие вопросы по тегам