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. Border for Class inheriting QWidget and QDialog
Forum Updated to NodeBB v4.3 + New Features

Border for Class inheriting QWidget and QDialog

Scheduled Pinned Locked Moved Unsolved General and Desktop
11 Posts 6 Posters 6.4k Views 5 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi,

    Why the double inheritance ? QDialog is already a QWidget.

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    2
    • Pradeep KumarP Offline
      Pradeep KumarP Offline
      Pradeep Kumar
      wrote on last edited by
      #3

      Hi,

      No i have inherited from QWidget,
      sorry about question. rephrased
      i asked if we have inherited either from QDialog or QWidget, how can we have border for the main widget not to its child ?.

      if i use

      this.setStyleSheet("QWidget{border:2px solid black}");

      or

      this.setStyleSheet("QDialog{border:2px solid black}");

      it is providing border for the child widgets too, reading the docs i came to know this cant be done.

      I only want to have border for main widget, not for its children.

      Please provide guidance,

      Thanks,

      Pradeep Kumar
      Qt,QML Developer

      1 Reply Last reply
      0
      • dheerendraD Offline
        dheerendraD Offline
        dheerendra
        Qt Champions 2022
        wrote on last edited by
        #4

        Just name your parent object with ->setObjectName("Pradeep") then use object name selector # in the css.

        #Pradeep {

        }

        Dheerendra
        @Community Service
        Certified Qt Specialist
        http://www.pthinks.com

        1 Reply Last reply
        9
        • Pradeep KumarP Offline
          Pradeep KumarP Offline
          Pradeep Kumar
          wrote on last edited by
          #5

          Hi,

          I used

          this->setObjectName("hello");
          this->setWindowFlags(Qt::FramelessWindowHint);
          this->setStyleSheet("#hello{border:2px solid black}");
          

          still not working , i am not getting border for MyWidget

          Thanks,

          Pradeep Kumar
          Qt,QML Developer

          mrjjM 1 Reply Last reply
          0
          • Pradeep KumarP Pradeep Kumar

            Hi,

            I used

            this->setObjectName("hello");
            this->setWindowFlags(Qt::FramelessWindowHint);
            this->setStyleSheet("#hello{border:2px solid black}");
            

            still not working , i am not getting border for MyWidget

            Thanks,

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @Pradeep-Kumar said in Border for Class inheriting QWidget and QDialog:

            Hi
            Well test some more. It does work.
            If I place widget and do
            ui->widget->setObjectName("hello");
            ui->widget->setWindowFlags(Qt::FramelessWindowHint);
            ui->widget->setStyleSheet("#hello{border:2px solid black}");

            i get alt text

            So naming the widget does work :)

            1 Reply Last reply
            0
            • Pradeep KumarP Offline
              Pradeep KumarP Offline
              Pradeep Kumar
              wrote on last edited by
              #7

              Widget::Widget(QWidget *parent)
              : QWidget(parent)
              {
              this->setObjectName("hello");
              this->setWindowFlags(Qt::FramelessWindowHint);

              this->setStyleSheet(
                          "#hello{"
                          "border: 2px solid grey;"
                          "padding: 6px; }"
                          );
              

              }

              My Class Name is Widget , how to make use of it?.

              Thanks,

              Pradeep Kumar
              Qt,QML Developer

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #8

                Hi,

                IIRC:

                "Widget{"
                "border: 2px solid grey;"
                "padding: 6px; }"
                

                I'd suggest giving your class a more sensible name (even MyWidget will do). I can already see the hair pulling debugging session because nobody notices there's a missing Q before Widget.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • Venkatesh VV Offline
                  Venkatesh VV Offline
                  Venkatesh V
                  wrote on last edited by
                  #9

                  Hi @Pradeep-Kumar

                  You can draw a rectangle of your screen size it can be looks like border.

                  drawRect(this->rect())

                  1 Reply Last reply
                  2
                  • Pradeep KumarP Offline
                    Pradeep KumarP Offline
                    Pradeep Kumar
                    wrote on last edited by
                    #10

                    Hi,

                    if i use paintevent to get the border for the main widget.

                    void Widget::paintEvent(QPaintEvent *event)
                    {

                    QPainter painter(this);
                    
                    QPen oMainBorderQPen;
                    oMainBorderQPen.setWidth(1);
                    oMainBorderQPen.setColor("black");
                    
                    painter.setPen(oMainBorderQPen);
                    painter.drawRect(this->rect());
                    

                    }

                    i am getting the border only for top and left , but for bottom and right i am no getting the border.

                    image is attached
                    https://i.imgsafe.org/3e800d2ed5.png

                    Any Solutions?.

                    Thanks,

                    Pradeep Kumar
                    Qt,QML Developer

                    K 1 Reply Last reply
                    0
                    • Pradeep KumarP Pradeep Kumar

                      Hi,

                      if i use paintevent to get the border for the main widget.

                      void Widget::paintEvent(QPaintEvent *event)
                      {

                      QPainter painter(this);
                      
                      QPen oMainBorderQPen;
                      oMainBorderQPen.setWidth(1);
                      oMainBorderQPen.setColor("black");
                      
                      painter.setPen(oMainBorderQPen);
                      painter.drawRect(this->rect());
                      

                      }

                      i am getting the border only for top and left , but for bottom and right i am no getting the border.

                      image is attached
                      https://i.imgsafe.org/3e800d2ed5.png

                      Any Solutions?.

                      Thanks,

                      K Offline
                      K Offline
                      kenchan
                      wrote on last edited by kenchan
                      #11

                      @Pradeep-Kumar if you set the width and height 1 pixel less you might see it. I have had to do that in the past.

                      1 Reply Last reply
                      1

                      • Login

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