Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How to keep QListWidget focus policy to Qt::NoFocus after editing an item.



  • Hello everyone,

    I am new to Qt Programming, so please forgive me if I am asking something silly :P
    I have a QListWidget with some QListWidgetItems attached. I use QListWidget::setFocusPolity(Qt::NoFocus) in order to disable focus on the list. I also have a button that calls QListWidget::editItem() when I click it. When I click the button the QListWidget regains focus automatically(look like Qt does it internally in order to edit the item). The problem is that I don't know how to unset the focus after editing the item. I tried to connect the signal itemChanged(QListWidgetItem*) to a slot that changes the current focus from QListWidget to my main Window widget but this works only if make changes on the QListWidgetItem. If I click the button but then press Esc without changing the text of the QListWidgetItem then the itemChanged() signal is not emitted. So, my question is the following: Is there some kind of "editingFinished" signal/event emitted after editing a QListWidgetItem?

    Thanks in advance!

    Cheers



  • Maybe "QAbstractItemDelegate::closeEditor() ":http://doc.qt.nokia.com/latest/qabstractitemdelegate.html#closeEditor can help you. You can connect it like this:

    @
    connect(
    itemViewOrWidget->itemDelegate(),
    SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),
    this,
    SLOT(editorWasClosed(QWidget*,QAbstractItemDelegate::EndEditHint))
    );
    @



  • Thanks mate! It works!
    Although if finish editing an item by clicking another item on the list it won't work. (it only works if i press ENTER , ESC etc) But that's not a problem, in that case I can catch the itemClicked() signal and reset the focus. Thanks for help dude!

    Cheers!


Log in to reply