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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView  (Прочитано 5403 раз)
Djavdet
Гость
« : Февраль 26, 2012, 18:13 »

Добрый день!

Недавно начал работать  с моделями и отображениями. Возник вопрос Улыбающийся.  Ситуация: имеется QTableView который отображает некоторые данные из QStarndartItemModel. Появилась необходимость отобразить часть текста в ячейки одним ширфтом(цветом, наклоном, толщиной) и другую часть другим.
Не подскажите самый простой способ для этого?  Мне пока пришла идея сделать каждую ячейку отдельной однострочной таблицей, тогда для каждого символа можно было бы задавать свой FontRole. Возникает вопрос как это реализовать?

Поделитесь пожалуйста советами. Спасибо!
Записан
Rem Norton
Гость
« Ответ #1 : Февраль 26, 2012, 19:14 »

Изобретать велосипед нет необходимости. Уже есть QStandardItem, там это все уже есть.
Записан
Djavdet
Гость
« Ответ #2 : Февраль 26, 2012, 19:20 »

Это хорошо. Не подскажите пример где можно глянуть?
Записан
Rem Norton
Гость
« Ответ #3 : Февраль 26, 2012, 19:36 »

Достаточно почитать документацию про
Код
C++ (Qt)
void QStandardItem::setData ( const QVariant & value, int role = Qt::UserRole + 1 )
 
там все есть.

P.S. так же читаем доку по enum Qt::ItemDataRole. Это один из ключевых моментов. Описано все толково, примеров не потребуется.
« Последнее редактирование: Февраль 26, 2012, 19:39 от Rem Norton » Записан
Djavdet
Гость
« Ответ #4 : Февраль 26, 2012, 19:57 »

Все равно не понял как это использовать в контексте моей задачи.
Записан
Rem Norton
Гость
« Ответ #5 : Февраль 26, 2012, 20:29 »

Эх... ну например меняем шрифт.  Точнее подчеркнем текст в ячейке [0,0]
Код
C++ (Qt)
/*
QTableView* view;
QStandardItemModel* model;
 
somewhere in UI file.
*/

QStandardItem* item = model->item(0,0);
if (item)
{
 QFont font = view->font();
 font.setUnderline(true);
 item->setData(font, Qt::FontRole);
}
 

Так понятно?
Записан
Djavdet
Гость
« Ответ #6 : Февраль 26, 2012, 20:43 »

Вы наверное неправильно поняли вопрос. Есть таблица n*m ячеек. В каждой текст. Мне необходимо у некоторых ячеек часть текста отобразить одним шрифтом, другую половину текста другим. Ваш подход он устанавливает свойство шрифта для всей ячейки, а не ее половинки.
Записан
Rem Norton
Гость
« Ответ #7 : Февраль 26, 2012, 21:26 »

А, ну тогда боюсь, что стандартными средствами Qt это не получится сделать. Если только отнаследоваться от QTableView и там реализовать этот функционал.
Записан
kambala
Джедай : наставник для всех
*******
Online Online

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Февраль 26, 2012, 21:32 »

использовать QTextEdit в качестве внутреннего виджета ячейки, делается через делегат
Записан

Изучением 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
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Февраль 27, 2012, 10:46 »

использовать QTextEdit в качестве внутреннего виджета ячейки, делается через делегат
Наверное QLabel по-легче будет.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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