Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QPushbutton con progressbar o QProgressbar con evento on_click



  • Buongiorno a tutti.
    In una mia applicazione mi occorre una delle seguenti opzioni:
    a) un pulsante che possa colorarsi come una progressbar;
    b) Una QProgressbar che possa accettare il click del mouse.

    Qualcuno ha una soluzione da propormi prima che inizi a cercare di inventare l'acqua calda?

    Grazie a tutti
    Valerio.



  • Propongo una soluzione semplice.
    Posso settare lo stile nel seguente modo:

    ui->pushButton_2->setStyleSheet("background: QLinearGradient(x1: 0, y1: 1, x2: 1, y2: 1, stop: 0.0 #0f0, stop: 0.05 #fff, stop: 1.0 #fff);");
    

    Cambiando il valore intermedio (stop: 0.05 #fff) cambiando il valore decimale da 0 a 100 come per una progressbar.



  • a) reimplementa paintEvent di QPushButton, riempi una QStyleOptionProgressBar e usa disegna il controllo
    b) reiplementa mouseReleaseEvent e emetti un signal



  • Perfetto.
    Ora dovrò capire come fare ma sapendo cosa cercare sarà più facile :D
    Grazie... ;)



  • a) praticamente devi copiare all'interno del tuo paintevent il paintevent di QProgressBar. Il problema e' che quello che fa initStyleOption tu lo devi fare a mano
    b) molto piu' facile da fare ma probabilmente devi comunque smanettare un po' con paintevent per cambiare l'aspetto della progressbar quando ci clicchi su



  • Perfetto.
    Per ora penso che terrò buona l'idea di cambiare solo il gradiente del QPushButton poiché è più veloce e mi permette di andare avanti con il programma. Purtroppo ho i tempi un po' stretti e devo dare qualcosa di visibile. La tua soluzione la applicherò in una eventuale seconda release.

    Grazie mille per l'aiuto.


Log in to reply