цветное обрамление какого либо виджета

 
0
 
C++
ava
daemonaz | 28.03.2013, 17:39
имеется форма, на ней несколько полей ввода значений, при изменении значений хотелось бы сделать обрамление вокруг виджета ввода значений красным цветом в случае неправильного ввода, желтым - не очень правильно, но допустимо, причем где неправильно, обрамление моргает красным цветом. Как это можно сделать? Посоветуйте куда копать?

Ответы (6)
ava
Jeka178RUS | 28.03.2013, 17:17 #
QPainter

Скорее всего придется переопределить paintEvent
ava
Amp | 28.03.2013, 17:53 #
В случае с полями ввода проще менять цвет его background-а, чем мудрить с обводкой. Либо просто рядом с полем ввода рисовать галочки и крестики соответствующих цветов, как многие делают. А для обводки я бы рассмотрел вариант с родительским виджетом, внутри которого будет лежать нужный нам виджет. И родитель бы брал rect своего чайлда и в paintEvent бы рисовал границу как ему нравится, хоть с блуром.
ava
math64 | 28.03.2013, 21:08 #
Просто цвета задаются с помощью stylesheet.

QLineEdit { border: 1px solid red }

К сожалению, стиль придётся менять при вводе невалидного текста, соответствующего pseudo-state для QLineEdit нет (есть :read-only), и нельзя задать анимацию.
Можно также менять палитру, но какие поля в ней менять, не знаю.
ava
daemonaz | 29.03.2013, 08:20 #
На картинке не мое творение, хотел бы сделать что-то подобное
<img src="http://s1.ipicture.ru/uploads/20130329/MMaCfn2R.png" border="0">
ava
math64 | 29.03.2013, 08:55 #

QString styleSheetRed = "QLineEdit { border: 1px solid red }";
QString styleSheetRed = "QLineEdit { border: 1px solid yellow }";
QString styleSheetBlack = "QLineEdit { border: 1px solid black }";

if (<<неправильное значение ввода>>)
  lineEdit->setStyleSheet(styleSheetRed);
else if(<<не очень правильн>>)
  lineEdit->setStyleSheet(styleSheetYellow);
else
  lineEdit->setStyleSheet(styleSheetBlack);

ava
daemonaz | 29.03.2013, 09:01 #
math64, спасибо большое!  smile 
Действительно то, что мне нужно! smile
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить