Не работает слот selectRow класса QQtableView |
Здравствуйте, гость ( Вход | Регистрация )
Не работает слот selectRow класса QQtableView |
dima154 |
12.11.2009, 16:07
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 10.10.2009 Пользователь №: 1148 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я определил свой класс :
Переопределил слот :
Но при выделении строки в виджете, слот не вызывается, а мне надо обрабатывать это выделение. Как я понимаю, надо присоединить этот слот к какому-то сигналу, но в QTableView и его родительских классах я похожих сигналов не нашел. Как решить данную проблему? Заранее спасибо всем ответившим! |
|
|
Litkevich Yuriy |
12.11.2009, 16:20
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
DIMEDROLL |
13.11.2009, 8:46
Сообщение
#3
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Но при выделении строки в виджете, слот не вызывается прочитай в документации для чего предназначен void QTableView::selectRow ( int row ) [slot]Тоесть поиграйся с параметрами SelectionMode and SelectionBehavior у твоего QTableView. Нужно установить что то типа SelectRows and SingleSelection. Если этот вариант не прокатит, то создавай свой слот который будет обрабатывать сигнал void clicked ( const QModelIndex & index ) |
|
|
Litkevich Yuriy |
13.11.2009, 10:57
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
DIMEDROLL, при выделении строки этот слот (selectRow) не вызывается, для этого я сказал, чтобы он прочитал документацию
|
|
|
DIMEDROLL |
13.11.2009, 11:10
Сообщение
#5
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
DIMEDROLL, при выделении строки этот слот (selectRow) не вызывается, для этого я сказал, чтобы он прочитал документацию В доке написано: Selects the given row in the table view if the current SelectionMode and SelectionBehavior allows rows to be selected. Насколько я понимаю - этот слот помечает данную строку в table view, если текущие флаги разрешают. Когда же он вызывается тогда? |
|
|
Litkevich Yuriy |
13.11.2009, 11:13
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
DIMEDROLL |
13.11.2009, 11:26
Сообщение
#7
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Когда же он вызывается тогда? когда захочешь выделить строку, тогда вызываешь, и он делает визуальное выделение. А dima154 хочет, чтобы при выделении мышкой что-то происходило. Для этого нужно не слот звать, а соединиться с каким-либо сигналомСтранно, зачем тогда selectRow() делать слотом, а не паблик методом? Хорошо, значит нужно обрабатывать сигнал void clicked ( const QModelIndex & index ) |
|
|
Litkevich Yuriy |
13.11.2009, 12:19
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
dima154 |
13.11.2009, 15:29
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 10.10.2009 Пользователь №: 1148 Спасибо сказали: 0 раз(а) Репутация: 0 |
Разобрался с проблемой.
Обрабатываю сигнал clicked(const QModelIndex&) c установленым флагом QAbstractItemView::SelectRows и из selectionModel вытаскиваю содержимое строки. CODE void MyTableView::slActivated(const QModelIndex &index){ index.row(); //Получили модель выбора QItemSelectionModel* selection = this->selectionModel(); //Получили модельные индексы модели выбора QModelIndexList indexes = selection->selectedIndexes(); //Выводим модельные индексы foreach(QModelIndex index,indexes){ qDebug()<<index.row()<<","<<index.column()<<"\t"<<index.data(Qt::DisplayRole).toString()<<"\n"; } } Ввел в заблуждение тот факт, что функция void selectRow ( int row ) была описана как [slot]. |
|
|
Litkevich Yuriy |
13.11.2009, 16:13
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 24.12.2024, 16:50 |