Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 17:37   #1
Cheburashka08
 
Регистрация: 10.12.2011
Сообщений: 3
По умолчанию ProgressBar / C++ / Qt Creator

Решаю задачку поэтапно. и на одном из них встала.

Вообщем суть такова. В диалоговом окошке я задаю время работы таймера (там сама задача огого какая, всю объяснять не буду) и пока он работает (и происходят энные действия на экране), у меня должен идти прогресс бар (то есть то количество времени, которое я задала в спинбоксе)
А он не ползет он вообще мертвый..
widget.h
Код:
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QSpinBox>
#include <QPushButton>
#include <QDialog>
#include <QTextCodec>
#include <QProgressBar>

namespace Ui 
{
    class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    int k;
private:
    Ui::Widget *ui;
};
class Started : public QDialog
{
    Q_OBJECT
public:
    Started(QWidget *pwgd=0);
    ~Started();
    QLabel *label;
    QSpinBox *box;
    QPushButton *pcmdOk;
    QPushButton *pcmdExit;
};
class Progress : public QProgressBar
{
    Q_OBJECT
public:
    Progress (QWidget *pwgd=0);
    ~Progress();
    QProgressBar *bar;
public slots:
        void slotStep();
};
#endif // WIDGET_H
widget.cpp
Код:

#include "widget.h"
#include "ui_widget.h"
#include <QGridLayout>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{    ui->setupUi(this);  }
Widget::~Widget()
{    delete ui;  }
Started::Started(QWidget *pwgd):QDialog(pwgd, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
{
    label=new QLabel(tr("Введите время работы таймера"));
    box=new QSpinBox(0);
    box->setMinimum(1);
    pcmdOk=new QPushButton("&Ok");
    pcmdExit=new QPushButton("&Exit");
    QGridLayout *pLayot = new QGridLayout;
    pLayot->addWidget(label, 0,0);
    pLayot->addWidget(box,1, 0);
    pLayot->addWidget(pcmdOk, 2, 0);
    pLayot->addWidget(pcmdExit, 2, 1);
    setLayout(pLayot);
}
Started::~Started(){}
Progress::Progress(QWidget *pwgd):QProgressBar(pwgd)
{    bar=new QProgressBar(0);}
void Progress::slotStep()
{
    for (int i=0; i<=100; i++)
    {
        bar->setValue(i);
        qApp->processEvents();
    }
}
Progress::~Progress(){}
main.cpp
Код:

#include <QtGui/QApplication>
#include "widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec *codec = QTextCodec::codecForName("CP1251");
    QTextCodec::setCodecForTr(codec);
    Widget w;

    Started started;
    started.setWindowTitle(a.tr("Таймер"));
    started.show();

    Progress progress(&w);
    progress.show();
    progress.move(220,510);
    progress.setMinimumWidth(200);
    progress.setMaximumWidth(400);
    w.resize(550,570);

    QObject::connect(started.pcmdExit, SIGNAL(clicked()), &started, SLOT(close()));
    w.k=started.box->value();
    progress.setRange(0,w.k);
    QObject::connect(started.pcmdOk, SIGNAL(clicked()), &started, SLOT(close()));
    QObject::connect(started.pcmdOk, SIGNAL(clicked()), &w, SLOT(show()));
    QObject::connect(started.pcmdOk, SIGNAL(clicked()), &progress, SLOT(slotStep()));

    return a.exec();
}
P. S. По методичке необходимо создававть gui приложение на базовом классе QWidget

Последний раз редактировалось Cheburashka08; 10.12.2011 в 17:56.
Cheburashka08 вне форума Ответить с цитированием
Старый 10.12.2011, 19:04   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

с прогрессом не работал. глянь тут пример с таймером, может поможет:
http://www.ssd.sscc.ru/qt/progressbar-main-cpp.html
Код:
    for (int i=0; i<=100; i++)
    {
        bar->setValue(i);
        qApp->processEvents();
    }
эт ваще лол
onewho вне форума Ответить с цитированием
Старый 10.12.2011, 20:16   #3
Cheburashka08
 
Регистрация: 10.12.2011
Сообщений: 3
По умолчанию

ыы)
удалось сделать через QTimeLine
Cheburashka08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Qt Creator _-Re@l-_ Свободное общение 21 15.02.2012 19:47
Qt creator 2.0.1 Hemul Qt и кроссплатформенное программирование С/С++ 12 26.02.2011 17:48
Qt Creator BioS Qt и кроссплатформенное программирование С/С++ 1 23.06.2010 06:50
Pic creator ++i Софт 9 03.06.2010 18:31
QT Creator mirawoo Общие вопросы C/C++ 2 23.08.2009 16:09