Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Djavdet от Февраль 26, 2012, 18:13



Название: QTableView
Отправлено: Djavdet от Февраль 26, 2012, 18:13
Добрый день!

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

Поделитесь пожалуйста советами. Спасибо!


Название: Re: QTableView
Отправлено: Rem Norton от Февраль 26, 2012, 19:14
Изобретать велосипед нет необходимости. Уже есть QStandardItem, там это все уже есть.


Название: Re: QTableView
Отправлено: Djavdet от Февраль 26, 2012, 19:20
Это хорошо. Не подскажите пример где можно глянуть?


Название: Re: QTableView
Отправлено: Rem Norton от Февраль 26, 2012, 19:36
Достаточно почитать документацию про
Код
C++ (Qt)
void QStandardItem::setData ( const QVariant & value, int role = Qt::UserRole + 1 )
 
там все есть.

P.S. так же читаем доку по enum Qt::ItemDataRole. Это один из ключевых моментов. Описано все толково, примеров не потребуется.


Название: Re: QTableView
Отправлено: Djavdet от Февраль 26, 2012, 19:57
Все равно не понял как это использовать в контексте моей задачи.


Название: Re: QTableView
Отправлено: Rem Norton от Февраль 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);
}
 

Так понятно?


Название: Re: QTableView
Отправлено: Djavdet от Февраль 26, 2012, 20:43
Вы наверное неправильно поняли вопрос. Есть таблица n*m ячеек. В каждой текст. Мне необходимо у некоторых ячеек часть текста отобразить одним шрифтом, другую половину текста другим. Ваш подход он устанавливает свойство шрифта для всей ячейки, а не ее половинки.


Название: Re: QTableView
Отправлено: Rem Norton от Февраль 26, 2012, 21:26
А, ну тогда боюсь, что стандартными средствами Qt это не получится сделать. Если только отнаследоваться от QTableView и там реализовать этот функционал.


Название: Re: QTableView
Отправлено: kambala от Февраль 26, 2012, 21:32
использовать QTextEdit в качестве внутреннего виджета ячейки, делается через делегат


Название: Re: QTableView
Отправлено: GreatSnake от Февраль 27, 2012, 10:46
использовать QTextEdit в качестве внутреннего виджета ячейки, делается через делегат
Наверное QLabel по-легче будет.