Russian Qt Forum

Qt => Вопросы новичков => Тема начата: burevestnik от Апрель 24, 2013, 11:15



Название: QDataWidgetMapper + QStandardItemModel + MyWidget: какие МЕТОДЫ переопределить?
Отправлено: burevestnik от Апрель 24, 2013, 11:15
Ребята, Какие методы у наследника QWidget нужно еще переопределить, чтобы он через QDataWidgetMapper  посылал данные QString в QStandardItemModel ?
проблема в том, что при потере фокуса, MyWidget  не пишет в модель, а мне бы надо это, в стандартных это как-то сделано... что я делаю не так?

Код:
class MyWidget : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(QString fileName READ getFileName WRITE setFileName)
public:
    explicit MyWidget (QWidget *parent = 0);
    QPushButton* dialogButton;
    MyLineEdit* lineEdit;
    QGridLayout* gridLayout;
    QString fileName;

public slots:
    QString getFileName();
    void setFileName(const QString);
};

маппирую:
Код:
...
myWidget = new MyWidget();
m_model = new QStandardItemModel();
m_mapper = new QDataWidgetMapper();
...
m_mapper->setModel(m_model);
m_mapper->addMapping(myWidget, id, "fileName");
...


Название: Re: QDataWidgetMapper + QStandardItemModel + MyWidget: какие МЕТОДЫ переопределить?
Отправлено: burevestnik от Апрель 24, 2013, 15:32
Тут дело в том, что фокус теряется MyWidget'ом, когда юзер кликает мышью, по QLineEdit чтобы ввести текст! Т.е. Когда фокус переходит к внутренним виджетам!
надо ловить:
Код:
 void QApplication::focusChanged ( QWidget * old, QWidget * now ) [signal]