Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Qt Stylesheet mystery

    General and Desktop
    3
    4
    4857
    Loading More Posts
    • 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.
    • R
      ronM71 last edited by

      My Desktop Qt app has a large stylesheet applied. It's applied for the QApplication derived class I am using:

      @this->ApplyStyleSheet(":/qss/default.qss");@

      It works well for all QWidget objects I define and use. (using *.ui files).

      My problem begins when i promote one of my QWidgets in the *.ui file I'm using to one of my own QWidget derived classes.

      When my widget was QWidget, the following worked and changed the background image:

      @QWidget#myWidget {
      background: transparent;
      background-image: url(:/images/bg_img.png);
      background-repeat: repeat-x;
      }@

      When I promoted the element to my custom QWidget derived class and changed to:

      @QMyDerivedClass#myWidget {
      background: transparent;
      background-image: url(:/images/bg_img.png);
      background-repeat: repeat-x;
      }@

      I no longer see my background image. Obviously I am missing something. What is it... I hope one of you knows.

      1 Reply Last reply Reply Quote 0
      • E
        Eddy last edited by

        I've seen this before with promoting widgets.

        The only solution i could find is to do al stylesheet stuff in code not in Qt Designer.

        Qt Certified Specialist
        www.edalsolutions.be

        1 Reply Last reply Reply Quote 0
        • D
          dangelog last edited by

          It's a FAQ. Read the entry for QWidget in here: [[doc:stylesheet-reference]]

          [quote]
          If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:
          @
          void CustomWidget::paintEvent(QPaintEvent *)
          {
          QStyleOption opt;
          opt.init(this);
          QPainter p(this);
          style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
          }
          @

          The above code is a no-operation if there is no stylesheet set.

          Warning: Make sure you define the Q_OBJECT macro for your custom widget.
          [/quote]

          Software Engineer
          KDAB (UK) Ltd., a KDAB Group company

          1 Reply Last reply Reply Quote 0
          • R
            ronM71 last edited by

            that did it. my bad. thanks.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post