From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- doc/html/progressbar-example.html | 289 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 doc/html/progressbar-example.html (limited to 'doc/html/progressbar-example.html') diff --git a/doc/html/progressbar-example.html b/doc/html/progressbar-example.html new file mode 100644 index 0000000..fcd3aea --- /dev/null +++ b/doc/html/progressbar-example.html @@ -0,0 +1,289 @@ + + + + + +Progress Bar + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

Progress Bar

+ + +

+This example shows how to use a progress bar. +


+

Header file: +

/****************************************************************************
+** $Id: qt/progressbar.h   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#ifndef PROGRESSBAR_H
+#define PROGRESSBAR_H
+
+#include <qbuttongroup.h>
+#include <qtimer.h>
+
+class QRadioButton;
+class QPushButton;
+class QProgressBar;
+
+class ProgressBar : public QButtonGroup
+{
+    Q_OBJECT
+
+public:
+    ProgressBar( QWidget *parent = 0, const char *name = 0 );
+
+protected:
+    QRadioButton *slow, *normal, *fast;
+    QPushButton *start, *pause, *reset;
+    QProgressBar *progress;
+    QTimer timer;
+
+protected slots:
+    void slotStart();
+    void slotReset();
+    void slotTimeout();
+
+};
+
+#endif
+
+ +


+

Implementation: +

/****************************************************************************
+** $Id: qt/progressbar.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "progressbar.h"
+
+#include <qradiobutton.h>
+#include <qpushbutton.h>
+#include <qprogressbar.h>
+#include <qlayout.h>
+
+#include <qmotifstyle.h>
+
+/*
+ * Constructor
+ *
+ * Creates child widgets of the ProgressBar widget
+ */
+
+ProgressBar::ProgressBar( QWidget *parent, const char *name )
+    : QButtonGroup( 0, Horizontal, "Progress Bar", parent, name ), timer()
+{
+    setMargin( 10 );
+
+    QGridLayout* toplayout = new QGridLayout( layout(), 2, 2, 5);
+
+    setRadioButtonExclusive( TRUE );
+
+    // insert three radiobuttons which the user can use
+    // to set the speed of the progress and two pushbuttons
+    // to start/pause/continue and reset the progress
+    slow = new QRadioButton( "S&low", this );
+    normal = new QRadioButton( "&Normal", this );
+    fast = new QRadioButton( "&Fast", this );
+    QVBoxLayout* vb1 = new QVBoxLayout;
+    toplayout->addLayout( vb1, 0, 0 );
+    vb1->addWidget( slow );
+    vb1->addWidget( normal );
+    vb1->addWidget( fast );
+
+    // two push buttons, one for start, for for reset.
+    start = new QPushButton( "&Start", this );
+    reset = new QPushButton( "&Reset", this );
+    QVBoxLayout* vb2 = new QVBoxLayout;
+    toplayout->addLayout( vb2, 0, 1 );
+    vb2->addWidget( start );
+    vb2->addWidget( reset );
+
+    // Create the progressbar
+    progress = new QProgressBar( 100, this );
+    //    progress->setStyle( new QMotifStyle() );
+    toplayout->addMultiCellWidget( progress, 1, 1, 0, 1 );
+
+    // connect the clicked() SIGNALs of the pushbuttons to SLOTs
+    connect( start, SIGNAL( clicked() ), this, SLOT( slotStart() ) );
+    connect( reset, SIGNAL( clicked() ), this, SLOT( slotReset() ) );
+
+    // connect the timeout() SIGNAL of the progress-timer to a SLOT
+    connect( &timer, SIGNAL( timeout() ), this, SLOT( slotTimeout() ) );
+
+    // Let's start with normal speed...
+    normal->setChecked( TRUE );
+
+
+    // some contraints
+    start->setFixedWidth( 80 );
+    setMinimumWidth( 300 );
+}
+
+/*
+ * SLOT slotStart
+ *
+ * This SLOT is called if the user clicks start/pause/continue
+ * button
+ */
+
+void ProgressBar::slotStart()
+{
+    // If the progress bar is at the beginning...
+    if ( progress->progress() == -1 ) {
+        // ...set according to the checked speed-radiobutton
+        // the number of steps which are needed to complete the process
+        if ( slow->isChecked() )
+            progress->setTotalSteps( 10000 );
+        else if ( normal->isChecked() )
+            progress->setTotalSteps( 1000 );
+        else
+            progress->setTotalSteps( 50 );
+
+        // disable the speed-radiobuttons
+        slow->setEnabled( FALSE );
+        normal->setEnabled( FALSE );
+        fast->setEnabled( FALSE );
+    }
+
+    // If the progress is not running...
+    if ( !timer.isActive() ) {
+        // ...start the timer (and so the progress) with a interval of 1 ms...
+        timer.start( 1 );
+        // ...and rename the start/pause/continue button to Pause
+        start->setText( "&Pause" );
+    } else { // if the prgress is running...
+        // ...stop the timer (and so the prgress)...
+        timer.stop();
+        // ...and rename the start/pause/continue button to Continue
+        start->setText( "&Continue" );
+    }
+}
+
+/*
+ * SLOT slotReset
+ *
+ * This SLOT is called when the user clicks the reset button
+ */
+
+void ProgressBar::slotReset()
+{
+    // stop the timer and progress
+    timer.stop();
+
+    // rename the start/pause/continue button to Start...
+    start->setText( "&Start" );
+    // ...and enable this button
+    start->setEnabled( TRUE );
+
+    // enable the speed-radiobuttons
+    slow->setEnabled( TRUE );
+    normal->setEnabled( TRUE );
+    fast->setEnabled( TRUE );
+
+    // reset the progressbar
+    progress->reset();
+}
+
+/*
+ * SLOT slotTimeout
+ *
+ * This SLOT is called each ms when the timer is
+ * active (== progress is running)
+ */
+
+void ProgressBar::slotTimeout()
+{
+    int p = progress->progress();
+
+#if 1
+    // If the progress is complete...
+    if ( p == progress->totalSteps() )  {
+        // ...rename the start/pause/continue button to Start...
+        start->setText( "&Start" );
+        // ...and disable it...
+        start->setEnabled( FALSE );
+        // ...and return
+        return;
+    }
+#endif
+
+    // If the process is not complete increase it
+    progress->setProgress( ++p );
+}
+
+ +


+

Main: +

/****************************************************************************
+** $Id: qt/main.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "progressbar.h"
+#include <qapplication.h>
+
+int main(int argc,char **argv)
+{
+    QApplication a(argc,argv);
+
+    ProgressBar progressbar;
+    progressbar.setCaption("Qt Example - ProgressBar");
+    a.setMainWidget(&progressbar);
+    progressbar.show();
+
+    return a.exec();
+}
+
+ +

See also Examples. + + +


+ +
Copyright © 2007 +TrolltechTrademarks +
Qt 3.3.8
+
+ -- cgit v1.2.1