Привет с qt только недавно начал знакомится, пишу свое первое приложение......
В моей ситуации делегаты всегда открыты
this->ui.tableView->openPersistentEditor(newit->index());
Eсли делегат создает например QLineEdit, я в нем, что-то печатаю потом кликаю в любом другом месте (смена фокуса), то данные сбрасываются в ячейку (провоцируется вызов setModelData в делегате)...
Я сделал свой составной виджет, в основе которого лежит QFrame
class PasswordEdit : public QFrame {
Q_OBJECT
public:
void setText(QString &text){
this->ui.lineEdit->setText(text);
}
QString text(){
return this->ui.lineEdit->text();
}
private slots:
void update();
public:
PasswordEdit(QWidget *parent = nullptr);
~PasswordEdit();
private:
Ui::PasswordEdit ui;
};
Идея его проста на фрэйме висит QLineEdit + QCheckBox + QPushButton...
Далее я ввожу некие данные в этот виджет в QLineEdit
Кликаю в любом другом месте и в делегате которые создает этот виджет не провоцируется вызов setModelData в отличии от делегата который создает "чистый" QLineEdit... Все это наводит на мысль, что мой составной виджет должен что-то делать еще... то ли флаги какие то ставить которые указывают, что этот виджет изменился то ли еще чего-то...
После такого хака... в делегате создающим мой составной виджет провоцируется вызов setModelData, при смене фокуса..
connect(this->ui.lineEdit, SIGNAL(editingFinished()), this, SLOT(update()));
void PasswordEdit::update(){
QFrame::setFocus();
}
Хоть это и решило мою проблему, но я понимаю, что это решение не правильное....
Так как правильно это решить?