Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to create a gradient like that from the style sheet
Forum Updated to NodeBB v4.3 + New Features

How to create a gradient like that from the style sheet

Scheduled Pinned Locked Moved General and Desktop
2 Posts 1 Posters 2.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Bihlerben
    wrote on last edited by
    #1

    Hello,

    I have a tree view and I would like to color the background of some items with a gradient depending on what the user is doing. One possibility is that the user moves the mouse over a tree item. The only way to set the background to a gradient in this case is to define a style sheet like that and to set it as the tree views style sheet:

    QTreeView::item:hover {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(255, 255, 255),
    stop: 1 rgb (0, 255, 255);
    border: 1px solid rgb (0, 255, 255);
    }

    This works.

    There are situations where I would like to mark tree items the same way, even when the mouse is not placed over this tree item (there is a 3D view and some items of the 3D view correspondent to tree items - I would like to highlight the tree view items, when the user points on those items in the 3D view).

    This is also possible. I the data(...) method of the document tree model, I return a brush that I have created like this:

    QLinearGradient gradient(0, 0, 0, 1);
    gradient.setColorAt(0, QColor(255, 255, 255));
    gradient.setColorAt(255, QColor(0, 255, 255));
    QBrush brush(gradient);

    This also works. The only problem is, that the gradient defined with the brush is much different from the gradient defined with the style sheet, even though the numbers are different (actually in this example the complete background is white - but when I play with the numbers I realize that it is actually a gradient, but not the one I had expected).

    Could someone explain me the reason?

    I thought that this could be the case because the QLinearGradient interprets the x1, x2, y1, y2 value as pixels. Does the style sheet interpret these values as relative values? I have played around with the coordinate mode of the gradient, but this did not help.

    How can I make both gradients look the same? Or should I get rid of those style sheets and define everything with QBrush's?

    Thank you very much!
    Benjamin

    1 Reply Last reply
    0
    • B Offline
      B Offline
      Bihlerben
      wrote on last edited by
      #2

      I forgot to mention: I am using Qt 4.8.5.

      Am I the only one with this issue? Or is there no answer?

      My impression is that the style sheets are not really well-thought-out. I have tried now to set solid background colors for selections, because of my problem with the gradients. Even there I have problems: on my Linux a branch is displayed by default in my tree (this looks nice). When a tree item is selected, my color (as defined in the style sheet) is used for that selection, but the background color of the branch is a different one. I have tried to define that color with

      QTreeView::branch:selected { background: white; }

      but then no branch is displayed at all. :-(

      I don't like style sheets.

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved