© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
26 апреля 2018 г. 10:39

QtQt/C++ - Урок 078. Не мешайте старый синтаксис сигналов на макросах SIGNAL SLOT и слотов с новым синтаксисом на указателях

signal, Slot, Qt

Все мы знаем, что в Qt существует два синтаксиса сигналов и слотов:

Но также, как не стоит мешать пиво с водкой, с таким же успехом не стоит смешивать два синтаксиса в рамках одного проекта.

Конечно, существуют проекты, в которых написано достаточно много кода и сделать полный рефакторинг по смене всего синтаксиса является довольно накладной работой, но если вы, постепенно дополняя проект, переходите на новый синтаксис, постарайтесь в рамках одного сигнала слотового соединения обновить все места кода с данным соединением на новый синтаксис.

Дело в том, что для обоих случаев ( SINGAL SLOT макросы и синтаксис на указателях ) формируется иное содержание moc файлов , что приводит к тому, что смешанное использование методов connect и disconnect не работает так, как ожидалось бы. А если быть точным, то метод disconnect не будет работать в том случае, если connect был вызван с использованием макросов, а disconnect был вызван с использованием указателей.

9 ноября 2017 г. 7:22

QtQt/C++ - Урок 073. Сигналы и слоты. Подключение слотов к перегруженным сигналам в рамках синтаксиса Qt5

Signal, Slot, Qt, Qt5

Довольно частой проблемой при работе с сигналами с слотами в Qt5 по моим наблюдениям за вопросами на форуме является подключение слотов в рамках синтаксиса на указателях к сигналам имеющим перегрузку сигнатуры. Тоже самое касается и слотов, которые имеют перегрузку.

Возьмём тестовый класс, который имеет перегруженные сигналы.

#include <QObject>

class TestClass : public QObject
{
    Q_OBJECT
public:
    explicit TestClass(QObject *parent = nullptr);

signals:
    void testSignal(int arg1);
    void testSignal(int arg1, int arg2);
};

Здесь имеется сигнал, с перегрузкой сигнатуры. Подключаться данный сигнал также будет к слотам, которые объявлены в классе Widget , и которые также имеют перегрузку сигнатуры.

2 апреля 2017 г. 18:22

PyQt5PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты)

PyQt5, QML, QtQuick, Signal, Slot

А теперь более глубоко погрузимся в работу с Qt с помощью PyQt5, воспользовавшись современными возможностями Qt. Под такими возможностями я подразумеваю QtQuick и QML. PyQt5 позволяет использовать классы Qt, которые могут обрабатывать QML код, а следовательно, можно написать интерфейс на QML, а также передавать сигналы в QML слой и вызывать слоты объектов, наследованных от QObject из QML слоя.

Чтобы познакомиться с такими возможностями PyQt5, напишем программу, которая реализует следующие задачи:

  • Интерфейс программы должен быть написан на QML
  • Должен быть реализован класс, наследованный от QObject и написанный на python, с которым будем взаимодействовать из QML
  • Приложение с помощью данного класса должно будет складывать и вычитать целые числа

Внешний вид приложения должен выглядеть следующим образом:

23 января 2017 г. 17:39
Konstantin Lazarev

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

Добрый вечер. Приложение состоит из двух классов А и В. В классе А осуществляется визуализация. В классе 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, а необходимо использовать слот из класса А. Подскажите пожалуйста как это реализовать.
4 января 2017 г. 2:00
Hunter1762631

Отправка сигнала QML

Доброго времени суток. Я в QT да и в QML новичок, потому прошу помощи. Столкнулся вот с какой загвоздкой, нужно чтоб при отправке сигнала в QML, окно авторизации скрывалось и открывалось другое. Делал по 3 и 20 урокам, с некоторыми изменениями.В общем при отправке сигнала ничего не происходит, не могу понять в чем проблема.

login.cpp(место где происходит отправка сигнала)
 if (count==1){
        // ("username and password is correct");
          emit sendToQml();

     }
login.h
#define LOGIN_H

#include <QSqlQuery>
#include <QObject>
#include <QVariant>

class CLogin : public QObject
{
    Q_OBJECT
public:
    explicit CLogin(QObject *parent = 0);

signals:
    void sendToQml();
public slots:
    void loginSlot();
private:
    int count;

};

#endif // LOGIN_H

main.qml(часть описания окна авторизации)
ApplicationWindow {
    id:logwindow
    visible: true
        width: 540
        height: 380
        title: qsTr("Окно авторизации")

        Material.theme: Material.Light
        Material.primary: Material.Cyan
        Material.accent: Material.Blue

        signal qmlSignal()


        Connections {
               target: clogin

              onSendToQml: {
                       logwindow.hide();
                        window.show();
               }
        }
14 августа 2018 г. 11:29
Марк Федяшов

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 70баллов,
  • Очки рейтинга1
14 августа 2018 г. 11:05
Марк Федяшов

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 50баллов,
  • Очки рейтинга-4
14 августа 2018 г. 11:00
Марк Федяшов

C++ - Тест 003. Условия и циклы

  • Результат 42баллов,
  • Очки рейтинга-8
Последние комментарии
10 августа 2018 г. 13:40
Alex

Работа с триггерными функциями в PostgreSQL

Приветствую! Если вы создаете новую таблицу, почему бы просто не сделать вьюху ? Просто от одного названия "триггер" как-то не хочется его использовать, а уж кода сколько писа...
10 августа 2018 г. 11:46
Евгений Легоцкой

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

Вон оно что. Не сталкивался с таким, надо будет глянуть исходники дефолтного менеджера объектов. Возможно там кеширование просто. Пробовали добавить запись через adminer, перезапусти...
10 августа 2018 г. 11:34
Alex

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

допустим у нас есть любая таблица, созданная джангой. через админку добавляем пару записей. все ок. далее, лично в моем случае , я открываю adminer, и в эту таблицу добавляю еще одну зап...
Сейчас обсуждают на форуме
14 августа 2018 г. 7:02
Ruslan-maniak

Переключение страниц и перевод фокуса на потомка новой страницы

Большое спасибо. Подтолкнули меня на мысль вынести обработку клавиш из PathView на всю страницу. И тогда - да, ваша подсказка работает. добавил в StackView onCurrentItemChanged: currentItem.fo...
14 августа 2018 г. 6:39
Евгений Легоцкой

Как сделать аудиовизуализацию для плеера на qt?

Добрый день. Просмотрите пример в Qt Creator, который на QML, там реализовано визуализация, возможно вам понравится использовать, QML, да и кастомные интерфейсы на нём всё-таки лучше...
11 августа 2018 г. 10:12
Евгений Легоцкой

Qt C++ vs QML

Добрый день. Если Андроид предполагается, то конечно нужно использовать QML. Я занимался разработкой арканоида на QML и ещё одной игры. Пытался реализовывать логику на QML, но это ...
11 августа 2018 г. 9:24
Евгений Легоцкой

Помогите со слоями

Проверочное сообщение
9 августа 2018 г. 13:27
Иринка Садыкова

как выделять текст мышкой в qml ?

я ведь использую те же средства. единственное отличие -  ввожу текст с клавиатуры в TextArea

Рекомендуемые страницы