Qt5 QTreeView не может заставить текст сохраняться из ячейки в редактор

Я работаю в киоск-системе и использую виртуальную клавиатуру. Прекрасно работает для редактирования полей в моем QTreeView, расширяя делегат и возвращая мой собственный локальный QLineEdit. Я могу напечатать на виртуальной клавиатуре, и QLineEdit заполняется правильно, и при получении фокуса из ячейки вызывается делегат destroyEditor(), где я беру текст из редактора и обновляю элемент ячейки, так что когда QLineEdit исчезает, я вижу правильный текст.

Мне нужна пара изменений здесь. Когда я нажимаю на элемент, я хочу заполнить его каким-нибудь начальным текстом, а когда я щелкаю по элементу, а затем снова нажимаю на него, я не хочу, чтобы он был пустым, но я хочу, чтобы он продолжал показывать текст это было в камере до применения редактора.

В createEditor() я добавил следующие изменения:

QWidget* IconFileSystemRenameDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    m_editor->setParent(parent);
    const QFileSystemModel* model = static_cast<const QFileSystemModel*>(index.model());
    m_keyboard->focusThis(m_editor);

    // NOTE: Added this block:
    // if text exists in New Name cell, keep that for editing, otherwise start with original name as text
    QString plugThis = model->fileName(model->index(0,4,model->parent(index)));
    if (plugThis.length() == 0)
        plugThis = model->fileName(model->index(0,0,model->parent(index)));
    m_editor->setText(plugThis);
    QString plugged = m_editor->text();

    // set editor visible
    m_editor->setVisible(true);
    return m_editor;
}

Что в основном сводится к проверке, не была ли изменена ячейка в столбце 4, а не пуста (в конечном итоге мне нужно будет также убедиться, что это не начальный текст). Если изменено, то я хочу взять содержимое этой ячейки, обновить редактор и вернуть его

Но когда я впервые щелкаю в режиме редактирования для ячейки, начальный текст (имя файла, которое я пытаюсь редактировать) не отображается, и когда я добавил текст в редактор и щелкнул, а затем снова нажал, редактор не не показывать мой текст, хотя в обоих случаях я могу отладить, чтобы увидеть, что текст на самом деле был применен.

Похоже, это становится пустым, когда передается обратно вызывающей стороне Qt. Я еще не нашел способ заставить это работать должным образом.

0 ответов

Другие вопросы по тегам