How program label that drops down from top center like QProgressDialog does?



  • Hello,
    I have successfully used a QProgressDialog using the following initializer:
    QProgressDialog progress("Text", 0, 100, this);

    It presents by nicely "dropping" down from the center / top of my main window.

    Now, I would like to create a temporary informational label for the user. Unlike the progress dialog, there is no "cancel" button, or any button for that matter. But, I very much like the style in which the progress dialog drops down on the window, and I would like to use that for my informational label. However, I ahve tried with a number of attempts, with variations on QDialog, QLabel, and even QStatusBar but none of them look like the one I like.

    I also tried to look at the source code for QProgressDialog itself; but the coding style has various conventions that make it hard for me to understand how to replicate the required parts without the button behaviour.

    Help?

    Thank you,
    Andy


  • Qt Champions 2016

    hi
    and using
    http://doc.qt.io/qt-5.5/qprogressdialog.html#setCancelButton
    setCancelButton(0);
    so there won't be a button is not an option?



  • Thank you, I see that is a why to avoid the cancel button, but for me to be more clear: I don't need/want the progress bar itself, either! What I like about the QProgressBar is its display behavior vis-a-vis the way it "drops" down gently from the top, and later recedes from whence it came, not the content itself. (My content will be a simple text string.)


  • Qt Champions 2016

    @buckler
    Ok :)
    Not sure i ever saw that effect. Do you have a sample where it show this
    "drop in" way?



  • Here is my code that has the effect of the dropping and receding (of course this is for a progress indicator rather than the label I am presently looking for):

    @
    QProgressDialog progress("Preloading targets from list...", "Cancel", 0, 100, this);
    progress.setWindowModality(Qt::WindowModal);
    progress.setMinimumDuration(1000);
    progress.setValue(8);
    this->repaint(); // ensure progress is shown
    qApp->processEvents();
    ...
    // and then sometime later at the point at which I want it to go away. A label wouldn't go away like this, but the example):
    progress.setValue(100);
    this->repaint(); // ensure progress is taken down
    qApp->processEvents();
    @


  • Qt Champions 2016

    @buckler
    Hmm, i tried the code in a button on mainform but
    the dialog just flashes and is gone. so not sure what the effect is. sorry
    You can animate using
    http://doc.qt.io/qt-5.5/animation-overview.html
    look at the "geometry" example.



  • Sorry, just sleep for as long as you like in between the two progress.setValue calls... or do any other program action that holds it up before setting the 100 value is what takes it down!


  • Qt Champions 2016

    @buckler
    well i just made button on mainwin and

    QProgressDialog progress("Preloading targets from list...", "Cancel", 0, 100, this);
    progress.setWindowModality(Qt::WindowModal);
    progress.setMinimumDuration(1000);
    progress.setValue(8);
    this->repaint(); // ensure progress is shown
    qApp->processEvents();
    

    in there but for some reason, it not really staying up. ;)



  • Is the function you are calling it from closing? That would take it away regardless of its value of course. It needs to stay in scope to be displayed, and without setting its value to 100.


  • Qt Champions 2016

    @buckler
    yes please shoot me, i made THE noob trick,
    allocated on stack, gone when function ends...
    Ok, so is this the fade in effect ?
    Like open softly?



  • Do you see it smoothly descend when created, connected (not floating) to top of window, and then when it goes away, it glides up as if into the bar again? If this is the screen effect you see, that's what I want my label to do.


  • Qt Champions 2016

    @buckler
    Ok that sounds so very cool. mine just pop up in center of mainwin.
    What platform are you on?
    (win 7 here)
    If its mac, then any dialog based widget should also slide.
    If you create empty dialog and show it, will it also slide?
    it must have parent set to mainwindow (or window where it should slide from)
    and be modal. And use show() , not exec();
    Update:
    also look here
    https://doc.qt.io/archives/qq/qq18-macfeatures.html
    seems like Qt::Drawer is what you are after.
    Sorry for being a bit thick. Didn't know QProgressDialog would have
    cool effects on other platforms :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.