Qt Forum

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

    Update: Forum Guidelines & Code of Conduct

    Unsolved why program is so laggy after using QGraphicsDropShadowEffect

    General and Desktop
    5
    13
    538
    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.
    • S
      saeid0034 last edited by saeid0034

      Hi here is my code

      QTGui::QTGui(QWidget *parent)
          : QMainWindow(parent),
      	ui(new Ui::MainWindow)
      {
              ui->setupUi(this);
      
      	connect(ui->btn_close, &QPushButton::clicked, this, &QWidget::close);
      	connect(ui->btn_minimize, &QPushButton::clicked, this, &QWidget::showMinimized);
      	connect(ui->btn_maximize_restore, &QPushButton::clicked, this, &QTGui::maximize_restore);
      
      	QGraphicsDropShadowEffect* windowShadow = new QGraphicsDropShadowEffect;
      	windowShadow->setBlurRadius(9.0);
      	windowShadow->setColor(palette().color(QPalette::Highlight));
      	windowShadow->setOffset(0.0);
      	ui->frame_main->setGraphicsEffect(windowShadow);
      
              ui->frame_label_top_btns->installEventFilter(this);
      }
      

      I dont know why, but my program become so laggy after using QGraphicsDropShadowEffect
      can anyone tell me what is my problem?
      thanks

      1 Reply Last reply Reply Quote 0
      • nagesh
        nagesh last edited by

        @saeid0034 confirm that behaviour is due to QGraphicsDropShadowEffect by disabling the graphics effect.

        ui->frame_main->graphicsEffect()->setEnabled(false);

        https://doc.qt.io/archives/qt-4.8/qgraphicseffect.html#enabled-prop
        //Using this property, you can disable certain effects on slow platforms, in order to ensure that the user interface is responsive.

        As per Qt docs

        Effects alter the appearance of elements by hooking into the rendering pipeline and operating between the source (e.g., a QGraphicsPixmapItem) and the destination device (e.g., QGraphicsView's viewport).
        
        1 Reply Last reply Reply Quote 1
        • S
          saeid0034 last edited by saeid0034

          yes, I tested it, when I disabled QGraphicsDropShadowEffect program work normally (its no longer laggy or slow). what can I do to use shadow in my program widget without any performance issues?
          I created a frameless window and I want to use shadow for it

          1 Reply Last reply Reply Quote 0
          • S
            saeid0034 last edited by

            I still have this problem, no matter what i do, when Im using shadow its make my program laggy...
            there is any fix??

            mrjj 1 Reply Last reply Reply Quote 0
            • mrjj
              mrjj Lifetime Qt Champion @saeid0034 last edited by

              @saeid0034
              Hi
              sadly i dont think its fixable as QGraphicsDropShadowEffect must be too heavy
              for your device to handle then.

              S 1 Reply Last reply Reply Quote 1
              • S
                saeid0034 @mrjj last edited by saeid0034

                @mrjj I tested it in other pc too, but result was the same, in fact program doesn't use much of resource at all

                mrjj 1 Reply Last reply Reply Quote 0
                • mrjj
                  mrjj Lifetime Qt Champion @saeid0034 last edited by

                  @saeid0034

                  So the lag comes at normal pc ? not a small device ?

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    saeid0034 @mrjj last edited by

                    @mrjj yes exactly, program running in pc

                    mrjj 1 Reply Last reply Reply Quote 0
                    • mrjj
                      mrjj Lifetime Qt Champion @saeid0034 last edited by

                      @saeid0034

                      Ok ?! What kind of PC are we talking about ?
                      I mean CPU, amount of ram and GFX card.

                      Did you try a default GUI project with the effect only to see ?
                      I mean so app really does nothing and just has this effect.
                      To see if that also lags.

                      1 Reply Last reply Reply Quote 1
                      • S
                        saeid0034 last edited by

                        @mrjj with program open: a custom progress bar and shadow program use this much of resource
                        bf36dc30-e1c5-439b-9459-1b28d79033b0-image.png
                        as You can see its not using much of resource at all (except power usage... maybe its because progress bar, its on IndeterminateProgress mode...)

                        1 Reply Last reply Reply Quote 0
                        • S
                          saeid0034 last edited by saeid0034

                          its also much less in release build (previous one was debug)
                          f0e61398-5274-4965-9c1b-2e3090dab5d6-image.png

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

                            I have experienced this slow down as well on a PC ..

                            Processor 11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2.50 GHz
                            Installed RAM 32.0 GB (31.6 GB usable)

                            My current approach is not using the drop shadow effect...(which I would like)

                            1 Reply Last reply Reply Quote 0
                            • M
                              moses-molina last edited by

                              I'm seeing the same issue in a small game running PySide6 on an apple M1 Macbook Pro. 200-300 FPS without drop shadow effect enabled, and 30FPS with. One solution for my use case may be to bake the effect into an image asset and draw that instead. I don't need the functionality of the QGraphicsDropShadowEffect during runtime, just the look.

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