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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос по делегатам  (Прочитано 4319 раз)
Karl-Philipp
Гость
« : Май 05, 2008, 11:05 »

Здравствуйте,
у меня задача сделать таблицу QTableView, к которой можно было бы добавлять строку. В каждой ячейке добавленной строки должен находиться определенный делегат (формат числа №n).

Структура строки следующая.

---------------------------------+----------+---------+
|    любые    символы        |   Спец   | Cпец     |
+--------------+---------------+ формат | формат  |
|Спец формат|Спец формат|   числа  | числа    |
|числа (№1)  |числа (№2) |   (№3)    | (№5)    |
+--------------+---------------+-----------+----------+

фактически я добавляю две строки, в которых объединяю ячейки.

Допустим, что делегаты для каждого формата числа в таблице смогут устанавливаться с помощью

Цитировать
void QAbstractItemView::setItemDelegateForColumn ( int column, QAbstractItemDelegate * delegate )

Однако в этом случае я не смогу вводить любые символы в левой верхней ячейке.
Подскажите, пожалуйста, какое решение может быть?
« Последнее редактирование: Май 05, 2008, 11:22 от terlan » Записан
ритт
Гость
« Ответ #1 : Май 05, 2008, 11:27 »

если не ошибаюсь, индекс ячейки в делегат передаётся - можно в делегатах закодить поведение до определённой строки и после

возможно, есть решение проще - надо искать/читать
Записан
Karl-Philipp
Гость
« Ответ #2 : Май 05, 2008, 11:33 »

точно, спасибо.
Помню, было уже про это не так давно. Но не смог найти.
Записан
Karl-Philipp
Гость
« Ответ #3 : Май 05, 2008, 18:35 »

Есть Qt 4.2.3, в ней пример:
\examples\widgets\lineedits\
Вопрос вызывает поведение валидатора QDoubleValidator

Цитировать
void Window::validatorChanged(int index)
 {
     switch (index) {
     case 0:
         validatorLineEdit->setValidator(0);
         break;
     case 1:
         validatorLineEdit->setValidator(new QIntValidator(
             validatorLineEdit));
         break;
     case 2:
         validatorLineEdit->setValidator(new QDoubleValidator(-999.0,
             999.0, 2, validatorLineEdit));
     }

     validatorLineEdit->clear();
 }

А именно, при попытке ввести значение с валидатором double validator, выводятся цифры, выходящие за указанный диапазон...

Где мои грабли?
компилятор  VC++

Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Май 05, 2008, 18:54 »

А именно, при попытке ввести значение с валидатором double validator, выводятся цифры, выходящие за указанный диапазон...

Где мои грабли?
компилятор  VC++

Вот на примере Qt 3.3

http://trolltech.com/developer/knowledgebase/faq.2006-05-15.0450651751/?searchterm=validator

Нужно наследоваться от QDoubleValidator и переопределить метод validate
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Karl-Philipp
Гость
« Ответ #5 : Май 08, 2008, 21:57 »

спасибо большое, получилось Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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