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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как перейти в режим редактирования таблицы?  (Прочитано 8003 раз)
Chester
Гость
« : Январь 21, 2010, 12:02 »

Добрый день!!!
Устанавливаю делегат для редактирования столбца в таблице...все нормально работает. И вот вопрос,как мне можно,например,перейти в режим редактирования не по двойному клику,как это стандартно реализовано,а например при нажатии соответствующей кнопки???Т.е. какой слот выплняет переход в режим редактирования таблицы?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Январь 21, 2010, 13:34 »

Код:
->setEditTriggers(QAbstractItemView::SelectedClicked);
Записан
crossly
Гость
« Ответ #2 : Январь 21, 2010, 13:36 »

openRersistentEditor ?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Январь 21, 2010, 13:45 »

аааа, туплю... слот вообще
Код:
 void	edit ( const QModelIndex & index )
с опен персистент эдитор нужно самому закрывать его
Записан
Chester
Гость
« Ответ #4 : Январь 21, 2010, 14:20 »

Спасибо большое!!!Получилось..
А вот есть еще вопросик...у меня создается делегат для редактирования вещественных чисел...Можно ли как-нибудь мне его создать на frame

При переопределении метода createEditor делаю так:
Код
C++ (Qt)
QWidget *createEditor(QWidget *parent,const QStyleOptionViewItem &/*option*/,const QModelIndex &/*index*/) const{
      QFrame *fr=new QFrame(parent);
      QDoubleSpinBox *editor = new QDoubleSpinBox(fr);
      QGridLayout *gridLayout = new QGridLayout(fr);
      gridLayout->addWidget(editor, 0, 0, 1, 1);
      editor->setMinimum(m_min);
      editor->setMaximum(m_max);
      editor->setDecimals(m_precision);
      editor->setSingleStep(m_step);
editor->installEventFilter(const_cast<MyDSBDelegate*>(this));
    return editor;
    }
 
только так не получается..(( Это ообще возможно сделать??
Записан
crossly
Гость
« Ответ #5 : Январь 21, 2010, 14:52 »

а если
Код:
return fr;
Записан
Chester
Гость
« Ответ #6 : Январь 21, 2010, 15:03 »

а если
Код:
return fr;

тогда системмная ошибка вылазиет...
Записан
Chester
Гость
« Ответ #7 : Январь 21, 2010, 15:15 »

А в первом случае только Frame рисуется
Записан
MoPDoBoPoT
Гость
« Ответ #8 : Январь 21, 2010, 15:16 »

тогда системмная ошибка вылазиет...
Хм, какая?
Вообще, лучше фрейм и спинбокс агрегировать в один виджет, предоставив необходимый функционал. А то в методах setEditorData() и setModelData() надо будет копать до QDoubleSpinBox, что как-то не очень.
Записан
crossly
Гость
« Ответ #9 : Январь 21, 2010, 15:18 »

тож верно...
Записан
Chester
Гость
« Ответ #10 : Январь 21, 2010, 16:48 »

Спасибо большое,получилось!!!
А QFrame я могу закрасить в серый цвет если он находится на белом фоне таблицы?? Или его цвет заисет только от виджета на котором он расположен??
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Январь 21, 2010, 17:37 »

Виджетам можно индивидуально устанавливать палитру.
Записан

Юра.
Chester
Гость
« Ответ #12 : Январь 22, 2010, 14:40 »

А можно еще вопросик...
У меня установлен делегат на один из столбцов таблицы...какой-нить сигнал испускается об окончании редактирования?? Просто после редактирования ячейки обновляется запрос в моей модели и сбрасываются свойства таблицы,такие например как resizeRowsToContents и после первого изменения таблица принимает немного другой вид чем изначально
Записан
Chester
Гость
« Ответ #13 : Январь 22, 2010, 18:08 »

получается,что при вызове метода setQuery модели ширина строки становится стандартной
Записан
Chester
Гость
« Ответ #14 : Январь 22, 2010, 19:07 »

В классе делегатов есть такой сигнал commitData( QWidget * editor )
Только он у меня срабатывает только когда я выхожу из режима редактирования и при этом DoubleSpinBox при этом если не получает фокуса ввода
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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