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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Банальный вопрос по QTableView  (Прочитано 6192 раз)
vasasol
Гость
« : Ноябрь 06, 2011, 18:01 »

Здравствуйте!
Вот банальный вопрос: есть QTableView и в колонках с 5 по 10 и в строках с 20 по 30 отображаются числовые значения.
Сам вопрос: как в этих ячейка (в указанном диапазоне) установить маску на эти числа?
Записан
madRoger
Гость
« Ответ #1 : Ноябрь 06, 2011, 19:18 »

Если нужна маска ввода числа, то можно реализовать делегат для ячейки, содержащий поле ввода QLineEdit. В делегате при создании поля ввода указать маску ввода с помощью QLineEdit::setInputMask.

Цитировать
....и в колонках с 5 по 10 и в строках с 20 по 30....

Тут сложнее, потому что присвоить делегат конкретной ячейке нельзя (можно либо всей колонке, либо всей строке). Можно попробовать поиграть с перекрытием делегатов.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Ноябрь 06, 2011, 21:46 »

создавать в своем делегате QLineEdit не нужно - стандартный делегат и так содержит его, поэтому надо просто взять существующий и установить ему маску
Записан

Изучением 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
madRoger
Гость
« Ответ #3 : Ноябрь 06, 2011, 23:46 »

Цитировать
надо просто взять существующий и установить ему маску

kambala, а как работать с существующим и какой класс ты имеешь ввиду под стандартным делегатом ?
Записан
vasasol
Гость
« Ответ #4 : Ноябрь 06, 2011, 23:49 »

Если нужна маска ввода числа, то можно реализовать делегат для ячейки, содержащий поле ввода QLineEdit. В делегате при создании поля ввода указать маску ввода с помощью QLineEdit::setInputMask.

Цитировать
....и в колонках с 5 по 10 и в строках с 20 по 30....

Тут сложнее, потому что присвоить делегат конкретной ячейке нельзя (можно либо всей колонке, либо всей строке). Можно попробовать поиграть с перекрытием делегатов.

В том и дело, что только выбранному диапазону ячеек
Записан
madRoger
Гость
« Ответ #5 : Ноябрь 06, 2011, 23:59 »

По поводу диапазона - сначала установить делегат с маской для всего QTableView, а потом исключить ненужные столбцы и строки, установив для них стандартный QItemDelegate.

kambala пишет, что можно работать со стандартным делегатом (вероятно QItemDelegate), установив для него маску. Если это реально, то все вообще просто.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Ноябрь 07, 2011, 00:32 »

я немного перепутал - я когда-то делал подобное для редактируемой ячейки: наследовался от QItemDelegate, переопределял createEditor(), в нем получал строку ввода через QItemDelegate::createEditor() и ей уже задавал нужные мне свойства. а вот насчет чисто отображения - не знаю, наверное таки придется добавлять QLineEdit самому.

да, и щас рекомендуют использовать QStyledItemDelegate в качестве базового класса.
Записан

Изучением 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
madRoger
Гость
« Ответ #7 : Ноябрь 07, 2011, 09:47 »

Как я понял, в данном случае речь идет о маске ввода, соответственно, ячейки будут редактироваться. Если бы была нужна маска для отображения, делегат вообще не нужен.
Записан
vasasol
Гость
« Ответ #8 : Ноябрь 07, 2011, 12:35 »

Как я понял, в данном случае речь идет о маске ввода, соответственно, ячейки будут редактироваться. Если бы была нужна маска для отображения, делегат вообще не нужен.
Маска нужна для отображения
Записан
madRoger
Гость
« Ответ #9 : Ноябрь 07, 2011, 13:16 »

QString::number
Записан
vasasol
Гость
« Ответ #10 : Ноябрь 07, 2011, 17:06 »

QString::number
Это где прикручивается? почему-то значения int = 123456789 непонятно иногда отображаются в виде 1.2+Е.....
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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