Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Nemo2000 от Январь 25, 2011, 17:15



Название: Настройка шрифтов в QTableWidget
Отправлено: Nemo2000 от Январь 25, 2011, 17:15
Как настроить шрифты в таблице, чтобы в разных ячейках был разный шрифт,размер и т.д.?
В одной ячейке также могут быть символы с разными шрифтами.
Должно выйти что-то наподобие таблицы с QTextEdit в каждой ячейке.
Есть идея сделать всё делегатами,но не пойму как передавать туда нужные параметры шрифта.. ???


Название: Re: Настройка шрифтов в QTableWidget
Отправлено: serg_hd от Январь 25, 2011, 17:38
А если реагировать на Qt::FontRole в перегруженном data()?:
Код
C++ (Qt)
QVariant MyModel::data(const QModelIndex& item, int role) const
{
if (role == Qt::FontRole)
{
  ...
}
}
 


Название: Re: Настройка шрифтов в QTableWidget
Отправлено: Nemo2000 от Январь 25, 2011, 18:07
ммм...извини,немного не понял что ты имел ввиду..можно поподробней ::)

Чтобы было яснее..у меня есть кнопка "Bold" при нажатии на которую меняю на жирный ,например, выделеный текст. При её нажатии в QTextEdit можно просто настроить
Код:
ui->textEdit->setFontWeight(QFont::Bold);
но как это сделать при нажатии кнопки если QTextEdit в делегате..не понимаю ???


Название: Re: Настройка шрифтов в QTableWidget
Отправлено: serg_hd от Январь 26, 2011, 15:10
ммм...извини,немного не понял что ты имел ввиду..можно поподробней ::)

Чтобы было яснее..у меня есть кнопка "Bold" при нажатии на которую меняю на жирный ,например, выделеный текст. При её нажатии в QTextEdit можно просто настроить
Код:
ui->textEdit->setFontWeight(QFont::Bold);
но как это сделать при нажатии кнопки если QTextEdit в делегате..не понимаю ???

Я просто имел ввиду MVC, т.е. использование QTableView + какая-нибудь модель, QSqlQueryModel например. С QTableWidget не работал, поэтому ничего конкретного сказать не могу - но поскольку он наследник QTableView и используемые во вьюхе методы public, то в QTableWidget они тоже должны быть доступны. Вобщем наследуешь QSqlQueryModel, перегружаешь его метод data(), и отлавливаешь нужный тебе role. В твоём случае, как я понял, это Qt::FontRole. Возвращаться методом в этом случае должен настроенный тобой QFont. Ну а если тебе надо просто сделать жирным выделенный текст, то всё ещё проще. Есть вьюха, напр. viewTable и модель modelSql. Добавляешь во вьюху виджет QTextEdit:
Код
C++ (Qt)
QTextEdit* textEdit = new QTextEdit("text");
viewTable->setIndexWidget(this->modelSql->index(0, 0), textEdit); //ячейка с координатами 0:0
 

Затем в слоте на клик по кнопке что-то вроде:
Код
C++ (Qt)
QFont font;
font.setBold(true);
viewTable->indexWidget(this->modelSql->index(0, 0))->setFont(font);
 

Ну а как это оптимизировать, чтоб не использовать жёсткие координаты разберёшься)