Russian Qt Forum
Октябрь 01, 2024, 10:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не получается создать сигнал.  (Прочитано 2275 раз)
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 значение? И как в данном случае сохранить значение в классе?
« Последнее редактирование: Июнь 27, 2011, 12:33 от Пантер » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июнь 27, 2011, 12:10 »

Ты в const методе изменяешь tvalue. Сделай так:

mutable QVariant tvalue;
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
PavelVX
Гость
« Ответ #2 : Июнь 27, 2011, 12:30 »

СПАСИБО!
Век живи, век учись, все равно все не учтешь Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.115 секунд. Запросов: 22.