Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
1

progress bar

29.07.2010, 11:18. Просмотров 4985. Ответов 36
Метки нет (Все метки)

Написала код для простенького web браузера
вот код

brouser.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef BROWSER_H
#define BROWSER_H
 
#include <QMainWindow>
class QWebView;
class QLineEdit;
class QPushButton;
class QProgressBar;
 
class browser : public QMainWindow
{
    Q_OBJECT
 
public:
    browser();
 
public slots:
    void load();
 
private:
    QWebView *view;
    QToolBar *fileToolBar;
    QLineEdit *adress;
    QPushButton *backward, *forward, *reload, *stop;
    QProgressBar *progress;
};
 
#endif
.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "browser.h"
#include "ui_browser.h"
 
#include <QtGui>
#include <QtWebKit>
#include <QTextCodec>
 
browser::browser()
{
    view = new QWebView(this);
    view->load(QUrl(" "));
    setCentralWidget(view);
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    fileToolBar = addToolBar(tr("Файл"));
    adress = new QLineEdit(fileToolBar);
    fileToolBar->addWidget(adress);
    backward = new QPushButton(tr("Назад"), fileToolBar);
    fileToolBar->addWidget(backward);
    forward = new QPushButton(tr("Вперед"), fileToolBar);
    fileToolBar->addWidget(forward);
    reload = new QPushButton(tr("Перегрузить"), fileToolBar);
    fileToolBar->addWidget(reload);
    stop = new QPushButton(tr("Остановить"), fileToolBar);
    fileToolBar->addWidget(stop);
 
    progress = new QProgressBar(fileToolBar);
    fileToolBar->addWidget(progress);
    connect(view,SIGNAL(loadProgressChanged(int)),progress,SLOT(setValue(int)));
    connect(adress,SIGNAL(returnPressed()),this,SLOT(load()));
    connect(backward,SIGNAL(clicked()),view,SLOT(backward()));
    connect(forward,SIGNAL(clicked()),view,SLOT(forward()));
    connect(reload,SIGNAL(clicked()),view,SLOT(reload()));
    connect(stop,SIGNAL(clicked()),view,SLOT(stop()));
}
 
 
void browser::load()
{
    QString name("http://" + adress->text());
    view->load(QUrl(name));
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <QApplication>
#include "browser.h"
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    browser wnd;
    wnd.setWindowTitle("Stasik Browser");
    wnd.show();
    return app.exec();
}

Всё запускается, только не функционирует прогресс бар, помогите решить эту проблему.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2010, 11:18
Ответы с готовыми решениями:

Иконки в navigation bar у calendar
Собственно как их изменить?

Можно ли переделать Progress bar в Track bar?
Можно ли переделать Progress bar в Track bar? От прогресбара нужно всего лишь,...

Progress Bar
Допустим, нужно сделать так чтобы после нажатия на кнопку, прогресс бар начинал...

Progress Bar
Вот. Нашел способ как сделать прогресс бар. Думаю будет интересно. ...

Progress bar?
Доброе время суток! Подскажите, пожалуйста, что лучше использовать?...

36
oxotnik
1628 / 1101 / 75
Регистрация: 21.08.2008
Сообщений: 4,625
Записей в блоге: 1
29.07.2010, 11:40 2
может у QProgressBar надо мин и макс задать сначала? они нулем случайно не инициализируются?
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 11:49  [ТС] 3
Цитата Сообщение от oxotnik Посмотреть сообщение
может у QProgressBar надо мин и макс задать сначала? они нулем случайно не инициализируются?
Дописала две строчки:
C++
1
2
progress->setValue(0);
progress->setMaximum(1024);
0 процентов показывает и все равно не идет
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 11:51 4
Цитата Сообщение от oxotnik Посмотреть сообщение
они нулем случайно не инициализируются?
по умолчанию - 0:100


Almareta, соедини временно, для отладки, с временным слотом. пусть в консоль выводит значение прогресса. так и увидишь, посылает ли QWebView правильные значения.

зы
опять мильен new
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 12:38  [ТС] 5
а нет способа попроще?
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 12:44 6
Цитата Сообщение от Almareta Посмотреть сообщение
а нет способа попроще?
почему нет? есть конечно - оставить так как есть
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 15:37  [ТС] 7
такой способ не подойдёт....

Добавлено через 1 час 38 минут
я вроде сделала вот так
C++
1
2
3
progress = new QProgressBar;
    fileToolBar->addWidget(progress);
    connect(view,SIGNAL(loadProgress(int)),progress,SLOT(setValue(int)));
правда прогресс идет пока загружается сама прога а не страница...

Добавлено через 49 минут
Подскажите пожалуйста, как прикрутить прогресс бар внизу браузера, то есть чтобы он не был на панели.
Что использовать Layout-ы?
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 15:40 8
Цитата Сообщение от Almareta Посмотреть сообщение
Подскажите пожалуйста, как прикрутить прогресс бар внизу браузера
в статусбар засунь.
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 15:55  [ТС] 9
Засунула
C++
1
2
progress = new QProgressBar;
status->addWidget(progress);
Не запускается - пишет
Starting /home/gorans/QT profects/GORANS br/webbr...
The program has unexpectedly finished.
/home/gorans/QT profects/GORANS br/webbr exited with code 0
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 15:59 10
Цитата Сообщение от Almareta Посмотреть сообщение
status
это кто?
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 16:03  [ТС] 11
Цитата Сообщение от niXman Посмотреть сообщение
это кто?
.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef BROWSER_H
#define BROWSER_H
 
#include <QMainWindow>
class QWebView;
class QLineEdit;
class QPushButton;
class QProgressBar;
class QStatusBar;
 
class browser : public QMainWindow
{
    Q_OBJECT
 
public:
    browser();
 
public slots:
    void load();
 
private:
    QWebView *view;
    QToolBar *fileToolBar;
    QLineEdit *adress;
    QPushButton *backward, *forward, *reload, *stop;
    QProgressBar *progress;
    QStatusBar *status;
};
 
#endif
я его так обозвала
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 16:23 12
что-то я не вижу инициализации status
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 16:30  [ТС] 13
Цитата Сообщение от niXman Посмотреть сообщение
что-то я не вижу инициализации status
дописала
C++
1
2
#include <QStatusBar>
status = new QStatusBar;
то же самое и ошибки нет и результат не выдаёт (
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 16:40 14
Цитата Сообщение от Almareta Посмотреть сообщение
дописала
покажи весь код конструктора.
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 16:43  [ТС] 15
Я лучше сразу весь код напишу
.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef BROWSER_H
#define BROWSER_H
 
#include <QMainWindow>
class QWebView;
class QLineEdit;
class QPushButton;
class QProgressBar;
class QStatusBar;
 
class browser : public QMainWindow
{
    Q_OBJECT
 
public:
    browser();
 
public slots:
    void load();
 
private:
    QWebView *view;
    QToolBar *fileToolBar;
    QLineEdit *adress;
    QPushButton *backward, *forward, *reload, *stop;
    QProgressBar *progress;
    QStatusBar *status;
};
 
#endif
.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "browser.h"
#include "ui_browser.h"
 
#include <QtGui>
#include <QtWebKit>
#include <QTextCodec>
#include <QStatusBar>
 
browser::browser()
{
    view = new QWebView(this);
    view->load(QUrl(" "));
    setCentralWidget(view);
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    fileToolBar = addToolBar(tr("Файл"));
    adress = new QLineEdit(fileToolBar);
    fileToolBar->addWidget(adress);
    backward = new QPushButton(tr("Назад"), fileToolBar);
    fileToolBar->addWidget(backward);
    forward = new QPushButton(tr("Вперед"), fileToolBar);
    fileToolBar->addWidget(forward);
    reload = new QPushButton(tr("Перегрузить"), fileToolBar);
    fileToolBar->addWidget(reload);
    stop = new QPushButton(tr("Стоп"), fileToolBar);
    fileToolBar->addWidget(stop);
 
    //progress = new QProgressBar;
    status = new QStatusBar;
    status->addWidget(progress);
    fileToolBar->addWidget(progress);
 
    connect(view, SIGNAL(loadProgress(int)), progress, SLOT(setValue(int)));
 
    connect(adress, SIGNAL(returnPressed()), this, SLOT(load()));
 
    connect(backward, SIGNAL(clicked()), view, SLOT(back()));
 
    connect(forward, SIGNAL(clicked()), view, SLOT(forward()));
 
    connect(reload, SIGNAL(clicked()), view, SLOT(reload()));
 
    connect(stop, SIGNAL(clicked()), view, SLOT(stop()));
 
}
 
 
void browser::load()
{
    QString name("http://" + adress->text());
    view->load(QUrl(name));
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <QApplication>
#include "browser.h"
#include <QTextCodec>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    browser window;
    window.setWindowTitle("GORANS Browser");
    window.show();
    return app.exec();
}
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 16:45 16
Цитата Сообщение от Almareta Посмотреть сообщение
//progress = new QProgressBar;
* * status = new QStatusBar;
* * status->addWidget(progress);
* * fileToolBar->addWidget(progress);
а progress инициализировать не нужно?
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
29.07.2010, 16:51  [ТС] 17
Цитата Сообщение от niXman Посмотреть сообщение
а progress инициализировать не нужно?
ай точно, теперь запустилось правда прогресса даже в помине нет...ни на верху ни внизу.
0
niXman
Эксперт С++
3204 / 1453 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.07.2010, 16:55 18
покажи скриншот окна.
1
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
30.07.2010, 08:33  [ТС] 19
Цитата Сообщение от niXman Посмотреть сообщение
покажи скриншот окна.
я извиняюсь за глупый вопрос, но я так понимаю что print screen тут не работает?
0
Almareta
Юный падаван
17 / 17 / 0
Регистрация: 19.03.2009
Сообщений: 253
30.07.2010, 08:41  [ТС] 20
Все поняла, вот скриншот
0
Миниатюры
progress bar  
30.07.2010, 08:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2010, 08:41

Progress Bar
Подскажите как сделать чтоб например я создал Progress Bar и один Button. И...

progress bar
Вообщем суть в этом у меня есть 3 формы в первой форме заполняются эдит1...

Progress bar
Я собственно совсем новичок в программировании, так что не ругайтесь строго....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru