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 по-легче будет.