Russian Qt Forum
Июнь 15, 2024, 23:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Изменение цвета в QTextEdit  (Прочитано 22516 раз)
fear
Гость
« : Апрель 11, 2007, 15:21 »

Необходимо писать разными цветами в QTextEdit, как этого можно добиться?
Записан
Kosh
Гость
« Ответ #1 : Апрель 11, 2007, 15:30 »

http://prog.org.ru/forum/topic_4768.html
Записан
fear
Гость
« Ответ #2 : Апрель 11, 2007, 19:40 »

Цитата: "Kosh"

Цитата: "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);
В итоге один раз красным, второй раз черным и так чередуется, почему так?
Записан
Kosh
Гость
« Ответ #3 : Апрель 12, 2007, 10:03 »

Цитировать

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

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

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

QT_STATIC_CONST QColor &red;
QT_STATIC_CONST QColor &black;
Записан
fear
Гость
« Ответ #4 : Апрель 12, 2007, 13:06 »

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

QT_STATIC_CONST QColor &red;
QT_STATIC_CONST QColor &black;


Если red и black объекты класса QColor, то фрагмент кода Vld2`а работать не должен, т.к. методу setFont(const QFont &) передаётся параметр класса QFont
Записан
Kosh
Гость
« Ответ #5 : Апрель 12, 2007, 13:36 »

Так он и не работает.

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

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

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

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

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

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

компилятор ругается как раз из-за неправильного типа параметра
Записан
fear
Гость
« Ответ #6 : Апрель 12, 2007, 13:43 »

Цитата: "Kosh"
Так он и не работает. ХЗ как там внутри эти переменные разименовываются.

я думаю проще там всё, red и black наверняка объекты класса QFont, объявленые ранее, только вот в классе QFont про цвет шрифта ни слова ...
Записан
Kosh
Гость
« Ответ #7 : Апрель 12, 2007, 17:37 »

Это уже изыски автора кода. Не заморачивайся, ибо это неправильно.
Записан
fear
Гость
« Ответ #8 : Апрель 18, 2007, 20:37 »

Вариант решения:
Код:
textEdit_->setTextColor(QColor(0,255,0));
textEdit_->insertPlainText("11111");
textEdit_->setTextColor(QColor(255,0,0));
textEdit_->insertPlainText("22222");
Записан
Kosh
Гость
« Ответ #9 : Апрель 19, 2007, 12:02 »

fear, дотошный ты человек. Вот тут http://www.qtlib.ru/node/31
человек глобально класс QTextEdit собрася перелопачивать, не хочешь ему помочь?
Записан
fear
Гость
« Ответ #10 : Май 10, 2007, 14:37 »

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

к чему бы это?

Можно ли цвет фона текста менять не заморачиваясь с HTML, интересно? Кто-нибуть пробовал?
Записан
goer
Гость
« Ответ #11 : Май 10, 2007, 14:56 »

а через QPalette неполучается? Вродебы тексЭдит в каком то месте виджет, по идее должно работать...
Записан
fear
Гость
« Ответ #12 : Май 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 *. Никакого результата ...
Записан
goer
Гость
« Ответ #13 : Май 10, 2007, 21:16 »

Ну например так:

Код:

QTextEdit *e = new QTextEdit();
e->setAutoFillBackground(true);
.....
QPalette p = e->palette();
p.setColor(QPalette::Window, Qt::red);
e->setPalette(p);
.....
Записан
fear
Гость
« Ответ #14 : Май 10, 2007, 22:52 »

goer спасибо за пример, только задача писать чёрным по белому и белым по чёрному, что то типа эффекта, который даёт QPalette::Base, но в его случае закрашивается вся область редактирования ... QPalette::Window и QPalette::Background вообще не дают ни какого эффекта ...
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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