KL
Konstantin LazarevJan. 23, 2017, 11:39 a.m.

Сигналы и слоты

Qt, Signal, Slot

Добрый вечер. Приложение состоит из двух классов А и В. В классе А осуществляется визуализация. В классе B реализуется работа с сетью.

 connect(&pageYandexTic,SIGNAL(finished(QNetworkReply*)), SLOT(on_load(QNetworkReply*)));
    connect(&pageGoogle, SIGNAL(loadFinished(bool)), this, SLOT(readHtmlGoogle())); // сигнал loadFinished вызывается по окончании загрузки интернет страницы
   connect(&pageGoogle, SIGNAL(loadProgress(int)), this, SLOT(loadProgressGoogle(int)));
Класс А содержит прогресс бар. Необходимо связать загрузку страницы с загрузкой прогресс бара. В connect прописано this, а необходимо использовать слот из класса А. Подскажите пожалуйста как это реализовать.
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
15

Добрый день.
вместо this поставить указатель или ссылку на требуемый объект.

connect(&pageGoogle, SIGNAL(loadProgress(int)), &pageGoogle, SLOT(loadProgressGoogle(int)));
KL

Получилось, подскажите, как сделать сигнал передающий значение int

KL

Получилось, подскажите, как сделать сигнал передающий значение int

C

не совсем понятный вопрос. Если объявить сигнал то:

signals:
void signalName(int arg1);
если вызвать то:
emit signalName(arg1);
KL

Отлично работает, спасибо.

KL
 connect(&manager,SIGNAL(finished(QNetworkReply*)),SLOT(on_Result(QNetworkReply*)));
 connect(&manager,SIGNAL(finished(QNetworkReply*)),SLOT(on_Result_2(QNetworkReply*)));
Возможно сделать переназначение слотов в одной программе. Например первый connect описан при одном нажатии кнопки, а второй вариант применяется при втором нажатии кнопки? Пример применения в QNetworkAccessNetwork первый слот применяется для загрузки XML документа, а второй для загрузки изображений.
KL

Или лучше использовать два разных менеджера загрузки?

Думаю, что возможно.

В URL же указывается расширение файла. Во всяком случае это будет справедливо для файлов изображений. Поэтому можно развести всё через условия.

QString urlStr = "http://url_to_file/image.jpg"; 

if (urlStr.endsWith(".jpg")
{
    connect(&manager,SIGNAL(finished(QNetworkReply*)),SLOT(on_Result(QNetworkReply*)));
}
else
{
    connect(&manager,SIGNAL(finished(QNetworkReply*)),SLOT(on_Result_2(QNetworkReply*)));
}

Что касается двух менеджеров загрузки, то тут не знаю. Нужно отталкиваться от архитектуры приложения, но в вашем случае, думаю, что можно и одним обойтись. Просто раскидать всё через условия.

KL

По моему выполняется два коннекта.

С чего бы вдруг? Если url один, то и коннект будет один. Один коннект на один url

KL

У меня чуток другое применение нежели описали вы. У меня методы выполнялись поочередно. Сначала один, потом второй. При повторном вызове, сигнал конца загрузки вызывал два слота. (Могу ошибаться)

Ну а в чём же тогда вопрос? Если применение другое и логика обработки отличны от того, что я предложил. А вообще, не видя кода, не могу ничего более сказать.

KL
{
 connect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load()));   // В конструкторе класса
}
void MyClass:: on_load()
{
qDebug()<<"on_load";
}
void MyClass::on_pushButton_clicked()
{
 url.setUrl("http://gazetax.ru/otzivi-za-dengi.php");
     Page.mainFrame()->load(url);
    connect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load_Page()));
}
void MyClass::on_load_Page()
{
qDebug()<<"on_load_Page";
}
В qDebug отображается 2 коннекта. Подскажите, как заблокировать выполнение сигнала находящегося в конструкторе?

Можно отключить коннект и подключить его заново.

{
    connect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load()));   // В конструкторе класса
}

void MyClass:: on_load()
{
    qDebug()<<"on_load";
}

void MyClass::on_pushButton_clicked()
{
    disconnect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load())); 
    url.setUrl("http://gazetax.ru/otzivi-za-dengi.php");
    Page.mainFrame()->load(url);
    connect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load_Page()));
}

void MyClass::on_load_Page()
{
    connect(&Page,SIGNAL(loadFinished(bool)), SLOT(on_load())); 
    qDebug()<<"on_load_Page";
}
KL

Отлично, спасибо.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting
V
  • Vitreg
  • Oct. 26, 2020, 1:35 a.m.

C++ - Test 001. The first program and data types

  • Result:73points,
  • Rating points1
V
  • Vitreg
  • Oct. 26, 2020, 1:23 a.m.

C++ - Test 005. Structures and Classes

  • Result:83points,
  • Rating points4
K
  • Kanes
  • Oct. 25, 2020, 8:42 a.m.

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:60points,
  • Rating points-1
Last comments
S

QML - Lesson 026. Intents with Qt for Android, part 1

Есть ли возможность приведения java типа у QAndroidJniObject? Интересует конкретно class to
VK

Qt/C++ - Lesson 015. QTableWidget – How to create a table with checkboxes?

Кто-нибудь знает, как сделать так, чтобы в QTableWidget состоящей из чекбоксов в строке таблицы можно было выбрать только один checkbox ?

Qt/C++ - Lesson 006. QSqlQueryModel – Tables in Qt with SQL-query

QSqlTableModel выполняет ряд стандартных операций для одной таблицы из базы данных. Поэтому там и реализован функционал по удалению и редактированию. QSqlQueryModel позволяет выполнить запр…
VB

Qt/C++ - Lesson 006. QSqlQueryModel – Tables in Qt with SQL-query

Добрый день. Хотел спросить вот что. Создал проект на основе QAbstractTableModel. В MainWindow cоответственно создал модель и связал с представлением. Поиск веду по списку элементов модели,…

QCheckBox в качестве делегата QTableView

До тех пор, пока у вас проект содержит только одну таблицу, или несколько то может быть. Когда их будет 1000 и чекбоксы в разных колонках, то без делегатов и переопределения возвращаемых ре…
Now discuss on the forum

QSqlTableModel - Как добавить картинки в таблицу, чтобы они отражались в диалоговом окне, но не были частью модели

Ну тогда в этом столбце указывайте пути на несколько картинок
u
  • ubomj
  • Oct. 27, 2020, 9:34 a.m.

Создание черновика как на авито и тд

Ну пользователь я думаю не настроен будет жмакать кнопку создать черновик, потом продолжать заполнять... А черновик в свою очередь нужен пока только для получения id, который нужен для муль…

QGraphicItems объекты

спасибо
  • BlinCT
  • Oct. 24, 2020, 6:14 a.m.

Открытие файла и чтение данных из него по средством башевского запроса

И так же интересно как в случаи чтения из потока таким путем можно узнавать об окончании файла?
KM

Qt анимация диалога c++

Хочу сдедать диалог который будет выпадать с помощью анимации Анимация готова но я не знаю как попровать ее так чтобы мой диалог выезжал с верху на центр, при закрытии диалог заезжает навер…
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB