crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Помогите разобраться c передачей данных по сети!
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 7.10.2010, 19:25
  PVGDRK, я на самом деле злой, я ж из Обливиона ))

А скорость разработки - это всего лишь опыт и количество практики. Придёт и к тебе :) Ты достаточно упорная для этого
PVGDRK Дата 7.10.2010, 8:18
  Спасибо Вам добрый человек за терпение и внимание к моим дурацким вопросам
Испытываю непередвавемые ощущения от осознания того, что нормальные люди пишут это минут за 15 а я за 2 недели и то не могу написать :cray:
Алексей1153 Дата 6.10.2010, 17:42
  PVGDRK, "до конструктора" - это, я так понимаю, на твоём языке означает "не член класса и расположен в cpp-файле" :)

тут выхода по меньшей мере два:
1) если не хочешь из cpp убирать, сделай в Generator функцию-трамплин.
2) или же сделай Create30000000 статической функцией класса Generator
PVGDRK Дата 6.10.2010, 15:08
  так они у меня и так в cpp файле генератора описаны. но до конструктора ...
а в каком виде их нужно писать в файле потока?
int Create30000000(WaveformDataReal **bS)
{   а тут  тогда что  писать?
}

Алексей1153 Дата 6.10.2010, 12:33
 
Цитата(PVGDRK @ 6.10.2010, 15:05) *
не знаю как обратиться к некотороым функциям, которые у меня импортировааны из dll....

так ты их в cpp-файле потока тоже задекларируй, их тоже будет видно :)

Цитата(PVGDRK @ 6.10.2010, 15:05) *
есть локальные переменные к которым через m_pData не обратиться

если это приватные члены класса, то сделай функцию для доступа к ним. Достучаться то всегда возможно
PVGDRK Дата 6.10.2010, 12:05
  Да при нажатии на кнопку pushButton_5 в другом потоке должны выполниться определенные действия,
я пока тупо все что делается в обработчике сигнала on_pushButton_5_clicked(); хочу сделать в другом потоке, т,к. не совсем понимаю как выполнить часть действий в частности потому.что не знаю как обратиться к некотороым функциям, которые у меня импортировааны из dll....
Раскрывающийся текст

extern "C" __declspec (dllimport) int Create30000000(WaveformDataReal **bS);
extern "C" __declspec (dllimport) int Add30000000(FILE *fin,float freq, float SNR);

как к ним можно обратиться в файле MyThread.cpp?
Если я пишу m_pData -> дальше выпадает список используемых мной функций в классе генератор но этих, которые из dll нету в списке.
И еще вопрос у меня в обработчике сигнала on_pushButton_5_clicked() есть локальные переменные к которым через m_pData не обратиться - какие есть варианты решения проблемы - сделать их глобальными или еще как то можно сделать?
Алексей1153 Дата 6.10.2010, 11:18
 
Цитата(PVGDRK @ 6.10.2010, 14:07) *
thread.start();

это напиши в конце конструктора главного окна. Или после созданияокна в main. Тогда окно успеет создасться :)

про on_pushButton_5_clicked я не совсем понял. Поток должен по неким сигналам понять, что нужно выполнить некую функцию - вот эти сигналы и надо приделать (сигналы тут - не прямо signals, а в общем смысле)
PVGDRK Дата 6.10.2010, 11:07
  Помогите теперь, пожалуйста понять, как это работает ... :unknown:
с горем по-полам что то написала
в файле main.cpp дописала пару строк:
MyThread thread;
    thread.start();

в файле
MyThread.cpp в методе run() дописала вызов своей функции из класса Generator
Раскрывающийся текст
void MyThread::run()
{
m_pData->on_pushButton_5_clicked();
}


Решила посмотреть как это работает в пошаговом режиме...
Получается.что как только программа запускается я попадаю на точку останова с вызовом функции m_pData->on_pushButton_5_clicked(); и сразу же перехожу к ее выполнению . получается.что у меня даже главное окно программы не успевает загрузиться
мне кажется,что перед этой строкой нужно написать что то тииа
if (m_pData-> что  тут не знаю )

Но как тогда из основного потока при нажатии кнопки pushButton_5_clicked() выполнить действия в другом потоке?
Если написать просто:
if (m_pData)
{
m_pData->on_pushButton_5_clicked();
}

то функция m_pData->on_pushButton_5_clicked(); не вызыается и тогда. как я понимаю, все делается в основном потоке ?
PVGDRK Дата 1.10.2010, 14:08
  Безмерно Вам благодарна за подробный ответ :give_rose:
Нечто подобное я пыталась написать , но видимо что то не так сделала и не помогло, а потом вообще запуталась что где пишется и в каких файлах - в моей книжке про это ничего не пишут... вот решила обратиться за помощью на форум...
Спасибо Вам большое еще раз. попробую сейчас реализовать это
Алексей1153 Дата 1.10.2010, 13:47
  файл MyThread.h
Раскрывающийся текст
#pragma once
#include <QThread>
class Generator;

class MyThread:public QThread
{
    Generator* m_pData;
    
public:
    MyThread(Generator* pData=0);
    virtual void run();
};




файл MyThread.cpp
Раскрывающийся текст
#include "MyThread"

MyThread::MyThread(Generator* pData)
       :m_pData(pData)
{
}

void MyThread::run()
{
}



файл Generator.h
Раскрывающийся текст
#pragma once
#include <QMainWindow>
class MyThread;

class Generator : public QMainWindow
{
    Q_OBJECT        

    MyThread* m_pTHREAD;
public:
    Generator(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~Generator();
...
...
};



файл Generator.cpp
Раскрывающийся текст
#include "Generator"
#include "MyThread"

Generator::Generator(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
    createFilesTable();
    Disable();

   m_pTHREAD=new MyThread(this);
}



Цитата(PVGDRK @ 1.10.2010, 16:39) *
в книге 850 страниц я пока на 44

про классы в книгах по C++ обычно пишут в самом начале - потому что это основы
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 5:21