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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отловить нажатие кнопки в QTableWidget???  (Прочитано 3953 раз)
CJ1
Гость
« : Июнь 17, 2012, 18:27 »

Как отловить нажатие кнопки в QTableWidget???
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 17, 2012, 18:53 »

унаследоваться и переопределить keyPressEvent() или повесить на объект eventFilter. уже кучу раз спрашивали на форуме, да и в документации это описано.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
CJ1
Гость
« Ответ #2 : Июнь 18, 2012, 07:32 »

понятно, спасибо
Записан
cooker
Гость
« Ответ #3 : Июль 04, 2013, 14:34 »

И тем ни менее... Интересует тот же вопрос.Попытался найти похожую тему - не нашел. Задача проста - чтобы при нажатии на любую ячейку(кроме заголовков), вызывалась одна и та же функция.

QTableWidget m_table = new QTableWidget(0,6);
QTableWidgetItem *item1 = new QTableWidgetItem();
m_table->setItem(0,0,item1);
connect(m_table,SLOT(itemClicked(item1)), this, SLOT(test()));


Не работает.
« Последнее редактирование: Июль 04, 2013, 14:46 от cooker » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Июль 04, 2013, 18:45 »

внимательно изучи сигналы-слоты еще раз.

во-первых, itemClicked — это сигнал, а не слот, а во-вторых, параметрами сигнала/слота являются типы объектов, а не сами объекты. в твоем случае правильно будет
Код
C++ (Qt)
connect(m_table, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(test()));
а в идеале надо и твоему слоту передавать параметр QTableWidgetItem *, чтобы знать на какой айтем кликнули:
Код
C++ (Qt)
// .h
class YourClass : ...
{
...
private slots:
   void test(QTableWidgetItem *item);
...
}
 
// .cpp
...
connect(m_table, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(test(QTableWidgetItem *)));
...
void YourClass::test(QTableWidgetItem *item)
{
// реализация слота
}

P.S. твой вопрос вообще не имеет никакого отношения к данной теме.
« Последнее редактирование: Июль 04, 2013, 18:47 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
cooker
Гость
« Ответ #5 : Июль 07, 2013, 13:44 »

kambala , огромное спасибо. Работает.

 QT никогда не учил и с ним не работал,а начальник срочно требует от меня завершить работу одной студентки,ушедшей в декрет с незаконченным проектом(не успела девочка дописать). Времени на глубокое изучения QT нет,вот и стараюсь в сжатые сроки хоть как-то довести проект до ума.Сайт полезный,занес его в favorites. В ближайшее время буду тут появляться с "тупыми" вопросами.
« Последнее редактирование: Июль 07, 2013, 13:47 от cooker » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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