Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: fear от Апреля 11, 2007, 15:21



Название: Изменение цвета в QTextEdit
Отправлено: fear от Апреля 11, 2007, 15:21
Необходимо писать разными цветами в QTextEdit, как этого можно добиться?


Название: Изменение цвета в QTextEdit
Отправлено: Kosh от Апреля 11, 2007, 15:30
http://prog.org.ru/forum/topic_4768.html


Название: Изменение цвета в QTextEdit
Отправлено: fear от Апреля 11, 2007, 19:40
Цитата: "Kosh"
http://prog.org.ru/forum/topic_4768.html

Цитата: "Kosh"
Код:

textEdit1->append("<font color = red><\\font>"); // должны переключиться в красный
textEdit1->append("Hello");
textEdit1->append("<font color = black><\\font>");           // возвращаемся в основной цвет


С тегами работает, но не эстетично это как то ...
Код:
textEdit->append("<font color = red>123<\\font>");


Интересен пример Vld2, только вот что за объекты такие red и black?
Цитата: "Vld2"

На форме есть поле textEdit1, хочу чтобы текст выводился красным шрифтом.
textEdit1->setFont(red);
textEdit1->append("Hello");
textEdit1->setFont(black);
В итоге один раз красным, второй раз черным и так чередуется, почему так?


Название: Изменение цвета в QTextEdit
Отправлено: Kosh от Апреля 12, 2007, 10:03
Цитировать

С тегами работает, но не эстетично это как то ...

Это первое, что в голову пришло, просто вспомнилось, что в QT html-теги поддерживаются. вот и написала, что придумала, а то до своей машины через полотдела топать, чтобы проверить.

red и black это статические переменные в QT. по крайней мере в h-файле они определены как
Код:

QT_STATIC_CONST QColor &red;
QT_STATIC_CONST QColor &black;


Название: Изменение цвета в QTextEdit
Отправлено: fear от Апреля 12, 2007, 13:06
Цитата: "Kosh"
Код:

QT_STATIC_CONST QColor &red;
QT_STATIC_CONST QColor &black;


Если red и black объекты класса QColor, то фрагмент кода Vld2`а работать не должен, т.к. методу setFont(const QFont &) передаётся параметр класса QFont


Название: Изменение цвета в QTextEdit
Отправлено: Kosh от Апреля 12, 2007, 13:36
Так он и не работает.

ХЗ как там внутри эти переменные разименовываются.

Вернется моя бродячая энцыклопедия по С++, я его подробно распрошу, что там деится внутри, когда есть const и & в параметрах.

Можно ещё поспрашивать на форуме С++ здесь, но тут нарпод жаргоном пользуется, которого я не понимаю

добавлено спустя 8 минут:

 Кстати, у меня на такое
Код:

textEdit1->setFont(red);
textEdit1->append("Hello");
textEdit1->setFont(black);

компилятор ругается как раз из-за неправильного типа параметра


Название: Изменение цвета в QTextEdit
Отправлено: fear от Апреля 12, 2007, 13:43
Цитата: "Kosh"
Так он и не работает. ХЗ как там внутри эти переменные разименовываются.

я думаю проще там всё, red и black наверняка объекты класса QFont, объявленые ранее, только вот в классе QFont про цвет шрифта ни слова ...


Название: Изменение цвета в QTextEdit
Отправлено: Kosh от Апреля 12, 2007, 17:37
Это уже изыски автора кода. Не заморачивайся, ибо это неправильно.


Название: Изменение цвета в QTextEdit
Отправлено: fear от Апреля 18, 2007, 20:37
Вариант решения:
Код:
textEdit_->setTextColor(QColor(0,255,0));
textEdit_->insertPlainText("11111");
textEdit_->setTextColor(QColor(255,0,0));
textEdit_->insertPlainText("22222");


Название: Изменение цвета в QTextEdit
Отправлено: Kosh от Апреля 19, 2007, 12:02
fear, дотошный ты человек. Вот тут http://www.qtlib.ru/node/31
человек глобально класс QTextEdit собрася перелопачивать, не хочешь ему помочь?


Название: Изменение цвета в QTextEdit
Отправлено: fear от Мая 10, 2007, 14:37
Цитата: "Kosh"
fear, дотошный ты человек. Вот тут http://www.qtlib.ru/node/31
человек глобально класс QTextEdit собрася перелопачивать, не хочешь ему помочь?

к чему бы это?

Можно ли цвет фона текста менять не заморачиваясь с HTML, интересно? Кто-нибуть пробовал?


Название: Изменение цвета в QTextEdit
Отправлено: goer от Мая 10, 2007, 14:56
а через QPalette неполучается? Вродебы тексЭдит в каком то месте виджет, по идее должно работать...


Название: Изменение цвета в QTextEdit
Отправлено: fear от Мая 10, 2007, 19:35
Цитата: "goer"
а через QPalette неполучается? Вродебы тексЭдит в каком то месте виджет, по идее должно работать...

а примерчик можно?

пробовал
Код:
  edit_ = new QTextEdit(this);
  setCentralWidget(edit_);
  edit_->setAutoFillBackground(false);

  QPalette palette;
  palette.setColor(QPalette::Disabled, QPalette::Background, Qt::red);
  edit_->setPalette(palette);

  edit_->setTextColor(Qt::blue);
  edit_->setPlainText("Hello ...");

  edit_->setTextColor(Qt::green);
//  edit_->setBackgroundRole(QPalette::Highlight);
  edit_->insertPlainText("[message] ");

где edit_ - QTextEdit *. Никакого результата ...


Название: Изменение цвета в QTextEdit
Отправлено: goer от Мая 10, 2007, 21:16
Ну например так:

Код:

QTextEdit *e = new QTextEdit();
e->setAutoFillBackground(true);
.....
QPalette p = e->palette();
p.setColor(QPalette::Window, Qt::red);
e->setPalette(p);
.....


Название: Изменение цвета в QTextEdit
Отправлено: fear от Мая 10, 2007, 22:52
goer спасибо за пример, только задача писать чёрным по белому и белым по чёрному, что то типа эффекта, который даёт QPalette::Base, но в его случае закрашивается вся область редактирования ... QPalette::Window и QPalette::Background вообще не дают ни какого эффекта ...


Название: Изменение цвета в QTextEdit
Отправлено: goer от Мая 11, 2007, 09:08
Вот вроде бы нашел.

Assitant.

Цитировать
void QTextFormat::setBackground ( const QBrush & brush )

Sets the brush use to paint the document's background to the brush specified.


Ну например чтоб вставить текст, ты используешь:

Цитировать
void QTextCursor::insertText ( const QString & text, const QTextCharFormat & format )


QTextCharFormat наследуется от QTextFormat как можно догадаться.

Настраиваешь формат текста (в том числе и фон) и пишешь курсором этот текст.