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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нажатие кнопки-делегата  (Прочитано 3805 раз)
qtист
Гость
« : Сентябрь 21, 2009, 16:56 »

Создаю кнопки-делегат в QTableView и отлавливаю сигналы нажатия от них:

Код
C++ (Qt)
....
QWidget *ButtonDelegate::createEditor(QWidget *parent,
   const QStyleOptionViewItem &/* option */,
   const QModelIndex &  index ) const
{
   QPushButton  *editor = new  QPushButton (parent);
   connect(editor, SIGNAL(clicked()), this, SLOT(emitCommitData()));
}
....
 
void ButtonDelegate::emitCommitData()
{  QWidget  *but = qobject_cast<QWidget *>(sender());
  QTableView *tableview = qobject_cast<QTableView*>( but->parent()->parent() );
 
  int k=tableview->currentIndex().row();
 
}

При первом нажатии  на одну из кнопку k возвращает -1.
При последующих нажатиях на любых кнопках возвращется всё нормально.
И чём фишка?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Октябрь 18, 2009, 01:25 »

сталкивался с чем то подобным - в какой-то ячейке твоя кнопочка - скорее в каком столбце? Мне кажется как то так получается что удается нажать кнопочку а currentIndex у VIEW еще не обновлен - он вообще не понимает что кто-то выделил ячейку у кот. эта кнопка, а когда кнопка теряет фокус (а может отжимается) то cureentIndex обновляется... Как ты их нажимаешь - мышкой или пробелом, и самое интересное - попробуй нажать кнопочки клавишей Enter - у меня при нажатии мыши сначала табличка переходила в режим редактирования, только по второму клику менчялось состояние кнопки - и я это не поборол... а вот пробелом сразу, а если нажать через Enter то индекс тоже глючил...

самое прикольнок что если сделать не делегата а setCellWidget ( QPushButton() ) то все работает нормально...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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