Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AfterEarth от Январь 12, 2011, 06:38



Название: Убрать фон у виджета
Отправлено: AfterEarth от Январь 12, 2011, 06:38
Здравствуйте ещё раз!

Есть ещё одна проблема - у виджета верхнего уровня я ставлю градиент:
Код:
setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0.497297, y1:0.006, x2:0.498, y2:1, stop:0 rgba(207, 207, 207, 255), stop:0.497297 rgba(239, 239, 239, 255), stop:0.967568 rgba(207, 207, 207, 255));"));

потом на одном из нижних уровней создаю объект, унаследованный от QPushButton и там все его элементы имеют такой-же градиент. Как его убрать у наследника QPushButton и его элементов?
Код:
Product_Label_New::Product_Label_New(QWidget *parent, QString p_name, QString p_id)
    : QPushButton(parent)
{
    product_name = p_name;
    product_id = p_id;
    //QPalette pal = this->palette();
    //pal.setColor(QPalette::Background,QColor(255,255,255,0));
    //this->setPalette(pal);
    this->setStyleSheet("background-color: rgba(0,0,0,0);");
    resize(397,287);
    this->setFixedSize(397,287);
    this->setMinimumSize(397,287);
    this->setStyleSheet("margin: 0px;");
    this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

    QImage image(":/images/fon_product.png");
    if (!image.isNull())
    {
        QImage img1 = image.scaled(QSize(397,287),Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
        QIcon icon;
        icon.addPixmap (QPixmap::fromImage(img1), QIcon::Normal, QIcon::Off);
        setIcon(icon);
        setIconSize(QSize(397,287));
     
    }
    QGridLayout *mainlayout = new QGridLayout(this);

        QLabel *lbl = new QLabel(this);
        lbl->setText("Текст");
        lbl->setStyleSheet("color: #f40000;");
        lbl->setFont(QFont("Arial",13,QFont::Bold));
        lbl->move(40,20);
/*
У этой метки стоит градиент, как у верхнего виджета :(
*/

....

Заранее благодарен за ответ!

P.S. Версия Qt 4.7.0


Название: Re: Убрать фон у виджета
Отправлено: merke от Январь 12, 2011, 10:08
данная тема уже обсуждалась на форуме. поищи


Название: Re: Убрать фон у виджета
Отправлено: AfterEarth от Январь 12, 2011, 10:34
Александр, подскажите хотя-бы по каким словам искать? Я новичок (и в Qt и здесь) и при поиске по словам widget градиент получил много страниц тем, на которых я пока не нашёл ничего по данной теме.. :(
Заранее премного благодарен!


Название: Re: Убрать фон у виджета
Отправлено: merke от Январь 12, 2011, 10:39
http://www.prog.org.ru/index.php?topic=14754.msg97062#msg97062


Название: Re: Убрать фон у виджета
Отправлено: twp от Январь 12, 2011, 11:19
.QPushButton или QPushButton#objectName
http://doc.crossplatform.ru/qt/4.6.x/stylesheet-syntax.html#selector-types (http://doc.crossplatform.ru/qt/4.6.x/stylesheet-syntax.html#selector-types)


Название: Re: Убрать фон у виджета
Отправлено: AfterEarth от Январь 12, 2011, 12:24
Александр, twp - огромное спасибо Вам за ответы! Теперь стало более понятно!  :)
Единственный впролс ещё - при определении стиля для объекта класса, который является потомком QPushButton и имеет своё имя (например product_class) нужно писать всё равно как QPushButton или что-то типа:
"QPushButton product_class {стиль;}" или просто достаточно "product_class {стиль;}"?

Заранее ещё раз благодарен за ответы!


Название: Re: Убрать фон у виджета
Отправлено: twp от Январь 12, 2011, 13:09
можно так
Код:
*#product_class {
 ...
}

или просто так
Код:
#product_class {
 ...
}
Если это файл стиля, где опеределены стили сразу для нескольких объектов приложения,
то предпочтительней все таки указывать класс, чтоб было легче ориентироваться


Название: Re: Убрать фон у виджета
Отправлено: AfterEarth от Январь 12, 2011, 23:16
Ага, спасибо большое!