Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. How can I put a background image in the first tab of a QTabWidget?

How can I put a background image in the first tab of a QTabWidget?

Scheduled Pinned Locked Moved Unsolved Qt for Python
13 Posts 2 Posters 2.9k Views
  • 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.
  • I Igor86

    Hi all!

    I would need to put a background image, stretched as background of the first tab of my QTabWidget. Ideally in the designer, but I think it cannot be done in the designer, so via code would be ok too..

    i tried these things based on what I found online, but none worked:

    self.tabWidget.setStyleSheet("background-image: url(:/test.png);")
    self.tabWidget.setStyleSheet("border-image: url(:/test.png);")
    

    any help is greatly appreciated..

    Thank you!

    JonBJ Offline
    JonBJ Offline
    JonB
    wrote on last edited by
    #2

    @Igor86
    What type is self.tabWidget? A QTabWidget? If you want it on the first widget in the tab widget then that is what you need to put it on (or even on the first tab if that is what you mean?). Also, have you set up your Python program so that it includes the resources you need for your image file?

    1 Reply Last reply
    0
    • I Offline
      I Offline
      Igor86
      wrote on last edited by
      #3

      @JonB
      Thanks for your answer!
      self.tabwidget is a QTabWidget...

      My goal is to have the image as background of the whole first Tab.

      I have not set up the python program so that it includes the resources needed.. actually I didnt even know I need to do that. I was thinking that it can be accessed by adding the path to the image...

      Thank you

      JonBJ 1 Reply Last reply
      0
      • I Igor86

        @JonB
        Thanks for your answer!
        self.tabwidget is a QTabWidget...

        My goal is to have the image as background of the whole first Tab.

        I have not set up the python program so that it includes the resources needed.. actually I didnt even know I need to do that. I was thinking that it can be accessed by adding the path to the image...

        Thank you

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #4

        @Igor86
        So try putting your style sheet onto the QWidget you place as the first tab, not on the QTabWidget itself.

        Your path is a "resource path" because it begins with :/. Setting up resources for a Python Qt is not so easy as you do not build an executable. It can be done if you want, but you would have to read how. If you are happy to do this by an external file instead, specify the full path to that file (/..., but not :/...).

        1 Reply Last reply
        0
        • I Offline
          I Offline
          Igor86
          wrote on last edited by
          #5

          Thank you very much! will try and report back!

          1 Reply Last reply
          0
          • I Offline
            I Offline
            Igor86
            wrote on last edited by
            #6

            @JonB

            unfortunately it is not working. I tried it via code and via designer:

            if I set a background-color: #112233; it works. but background-image: url("/test.png"); does not work.
            the image file is saved in the same folder as the script itself.

            886aee30-f28c-4d7a-8bfc-0fbc5ff1baef-image.png

            JonBJ 1 Reply Last reply
            0
            • I Igor86

              @JonB

              unfortunately it is not working. I tried it via code and via designer:

              if I set a background-color: #112233; it works. but background-image: url("/test.png"); does not work.
              the image file is saved in the same folder as the script itself.

              886aee30-f28c-4d7a-8bfc-0fbc5ff1baef-image.png

              JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by JonB
              #7

              @Igor86
              And the full path to your file which I stressed you will need is the /test.png that you have written there? I very much doubt it....!

              Get the path working first for a QImage or a QLabel or QPushButton with image or similar, so that you know it works. Then try it with the QWidget.

              1 Reply Last reply
              1
              • I Offline
                I Offline
                Igor86
                wrote on last edited by Igor86
                #8

                thank you, I got it working now..

                but somehting is not entirely right:

                i applied it to the "tab" widget, but also 2 QLabels contained in the Qwidget got the same background..

                i'd expect the two squares to be either empty, or transparent..

                (i did it via code, not in the designer, like this:

                self.tabWidget.findChild(QWidget, "tab").setStyleSheet("background-image: url(\"" + os.path.dirname(__file__) + "/test.png\");")
                

                a2a0e53c-77b2-42b4-a5e6-7b3ea0cb5004-image.png

                JonBJ 1 Reply Last reply
                0
                • I Igor86

                  thank you, I got it working now..

                  but somehting is not entirely right:

                  i applied it to the "tab" widget, but also 2 QLabels contained in the Qwidget got the same background..

                  i'd expect the two squares to be either empty, or transparent..

                  (i did it via code, not in the designer, like this:

                  self.tabWidget.findChild(QWidget, "tab").setStyleSheet("background-image: url(\"" + os.path.dirname(__file__) + "/test.png\");")
                  

                  a2a0e53c-77b2-42b4-a5e6-7b3ea0cb5004-image.png

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #9

                  @Igor86
                  I guess unqualified background-image: url(...) applies the background image to all descendants of the QWidget.

                  Try QWidget { background-image: url(...); } on it. Does that restrict it to your QWidget, or does it still inherit to QLabels because they are derived from QWidget?

                  If the latter try #FirstPage { background-image: url(...); } and set your QWidget's object name to FirstPage, which you can do at the top of the widget's properties you show in Designer.

                  1 Reply Last reply
                  1
                  • I Offline
                    I Offline
                    Igor86
                    wrote on last edited by
                    #10

                    @JonB

                    I updated my previosu post at the same time as you answered here..

                    JonBJ 1 Reply Last reply
                    0
                    • I Igor86

                      @JonB

                      I updated my previosu post at the same time as you answered here..

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by
                      #11

                      @Igor86
                      In what way does that affect what I said to try?

                      1 Reply Last reply
                      0
                      • I Offline
                        I Offline
                        Igor86
                        wrote on last edited by
                        #12

                        In no way, it was just an information..

                        I tryied what you said, and QWidget {... did not work, but the #FirstPage worked perfectly.. thank you very much for all your help!

                        JonBJ 1 Reply Last reply
                        1
                        • I Igor86

                          In no way, it was just an information..

                          I tryied what you said, and QWidget {... did not work, but the #FirstPage worked perfectly.. thank you very much for all your help!

                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on last edited by
                          #13

                          @Igor86
                          Good. If you had set its object tab to tab per your code you could obviously have used that for its name/selector, but I think FirstTab is clearer.

                          You might find that if you don't want to give it an object name .QWidget { background-image: url(...); } might have worked. That has a . (dot) before the widget class name. Per https://doc.qt.io/qt-5/stylesheet-syntax.html#selector-types (which you might want to read for these stylesheet things)

                          Class Selector .QPushButton Matches instances of QPushButton, but not of its subclasses.

                          This is equivalent to *[class~="QPushButton"].

                          But then if you did add any further QWidgets onto that page they would be affected.

                          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