Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 36
1

Общение с QT gui из dl

03.09.2016, 12:42. Показов 598. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Прошу помощи в следующей проблеме: есть dll, написанная на C++ которая подключается к QT проекту. Dll построена таким образом, что в ней в цикле происходит некая операция (в моем случае - вывод вычисленного значения). Сама dll не является QObject'ом, что делает невозможным использование connect() (класс дллки не пребразовывается в QObject ни под каким соусом). Сложность в том, что на форме в QT проекте есть прогрессбар и текстовое поле, куда требуется выводить лог. Каким образом мне следует передать указатель на форму в dll, чтобы и лог выводился и прогрессбар приращался? Использовать слоты и сигналы? Или, может быть, передать указатель на экземпляр формы? Или каким-то образом наследовать форму? Буду рад любой помощи, заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2016, 12:42
Ответы с готовыми решениями:

Как запустить qt gui программу, как демон, без gui, скрыв gui?
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет...

[ubuntu] Как запустить qt-gui программу без gui-интерфейся из консоли?
Как запустить qt-gui программу без gui-интерфейса из консоли?

Как запустить GUI приложение (например, notepad.exe) без отображения GUI?
Добрый день. Интересует есть ли такая возможность, как запустить GUI приложение (например,...

LWJGL+ GUI - Выход из рендерного цикла для работы в GUI без потери окна
Всем привет! Учусь использовать OpenGL в Java. И у меня возникла небольшая проблемка, окно LWJGL...

6
182 / 37 / 5
Регистрация: 29.01.2013
Сообщений: 253
04.09.2016, 19:54 2
*.h есть? Кажи его.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
04.09.2016, 23:53 3
Если разработчик dll не предусмотрел механизм обратного вызова, то никак.
0
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 36
05.09.2016, 10:25  [ТС] 4
Разработчик dll я. Меня как раз и интересует процесс построения механизма обратного вызова. *.h файл dll и проги-gui под спойлером:
dll.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
class FPGA 
{
public:
    char FPGA_bootp_search(string);
    char FPGA_fpga_load(int, char*, char *, char *);
    char FPGA_fpga_reset(char *, char *);
    char FPGA_fpga_test(char*, char*);
};
 
FPGA_API char export_bootp_search(string);
FPGA_API char export_fpga_load(int, char*, char *, char *);
FPGA_API char export_fpga_reset(char *, char *);
FPGA_API char export_fpga_test(char*, char*);
application.h
C++ (Qt)
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
#ifndef TEST_APP_H
#define TEST_APP_H
 
#include <QtGui/QMainWindow>
#include "ui_test_app.h"
#include <QWidget>
#include "../fpga_ctrl/fpga_ctrl.h "
 
class test_app : public QMainWindow
{
    Q_OBJECT
    
 
public:
    test_app(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~test_app();
    void console_text_add(QString);
    QPlainTextEdit *Txt_console;
    QProgressBar progressBar;
    FPGA m_fpga; //как передать здесь?
 
private:
    /* некоторые объекты */
    
 
 
private slots:
    /*обработчики-слоты*/
};
Добавлено через 1 час 4 минуты
Сразу же новый вопрос - возможно ли общение через слоты и сигналы, если dll не имеет класса QObject? Или это требование обязательно для всех классов, через которые я хочу общаться с формой? И если невозможно, то каким образом следует организовать обмен сообщениями?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.09.2016, 14:53 5
Смотри в сторону std::function и указателей на функцию.
0
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 36
05.09.2016, 17:22  [ТС] 6
Я не совсем понимаю. Мне, судя по всему, нужно передать ссылку на QT форму, в не QT дллку, которая её вроде как не воспримет. А вызывать функцию, чтобы каждый раз приращать прогрессбар по 1 - совсем не то решение.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.09.2016, 17:25 7
У меня создается впечатление, что вы совсем не знаете C++.
0
05.09.2016, 17:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2016, 17:25
Помогаю со студенческими работами здесь

LWJGL и GUI - Выход из рендерного цикла для роботы в GUI без потери окна
Всем привет! Учусь использовать OpenGL в Java. И у меня возникла небольшая проблемка, окно LWJGL...

общение с клиентом
интересует форма подачи заявки - какие основные вопросы нужно задавать клиенту чтобы и быстро...

Общение с гопотой
как с ними общаться и общаться по фени

Анонимное общение
Добрый день! У меня вопросы по безопасности. Скажите, когда я оставляю сообщение на форуме,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru