Russian Qt Forum

Qt => Общие вопросы => Тема начата: PavelVX от Июнь 27, 2011, 12:07



Название: Не получается создать сигнал.
Отправлено: PavelVX от Июнь 27, 2011, 12:07
Создал свой делегат на основе ComboBox. Для нормальной работы с БД хочу привинтить к нему сигнал before_update и after_update.
Код
C++ (Qt)
class ComboBoxDelegateCaption : public QItemDelegate
{
    Q_OBJECT
 
public:
       ComboBoxDelegateCaption(QObject *parent = 0);
 
       QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
                          const QModelIndex &index) const;
 
       void setEditorData(QWidget *editor, const QModelIndex &index) const;
 
       void setModelData(QWidget *editor, QAbstractItemModel *model,
               const QModelIndex &index) const;
 
       QVariant tvalue;
 
signals:
       void beforeChange(int);
private:
       QSqlQueryModel *DelegateModel;
};
 
void ComboBoxDelegateCaption::setModelData(QWidget *editor, QAbstractItemModel *model,
                                   const QModelIndex &index) const
{
   QComboBox *comboBox = qobject_cast<QComboBox*>(editor);
   QVariant value = comboBox->model()->index(comboBox->currentIndex(), 0).data();
   tvalue = value;
   emit beforeChange(123);
   model->setData(index, value, Qt::EditRole);
};
 
При сборке возникает ошибка:
delegateComboBox.cpp:146: error: passing 'const ComboBoxDelegateCaption' as 'this' argument of 'void ComboBoxDelegateCaption::beforeChange(int)' discards qualifiers
Что я делаю не так????

error: passing 'const QVariant' as 'this' argument of 'QVariant& QVariant::operator=(const QVariant&)' discards qualifiers. Не хочет 'const QVariant' присваивать QVariant. Но почему он тогда присваивает value значение? И как в данном случае сохранить значение в классе?


Название: Re: Не получается создать сигнал.
Отправлено: Пантер от Июнь 27, 2011, 12:10
Ты в const методе изменяешь tvalue. Сделай так:

mutable QVariant tvalue;


Название: Re: Не получается создать сигнал.
Отправлено: PavelVX от Июнь 27, 2011, 12:30
СПАСИБО!
Век живи, век учись, все равно все не учтешь :(