Russian Qt Forum
Декабрь 24, 2024, 20:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: connectSlotsByName не связывает со слотом  (Прочитано 17432 раз)
Bepec
Гость
« Ответ #15 : Март 27, 2012, 19:59 »

Нет сигнала - значит:
1) ты ошибся в написании (проверь 2 раза, потом ещё раз)
2) твой тип вообще не понимает Qt. Убери его наф*г  и вставь int.
3) у тебя где то ошибка в слоте Подмигивающий И да, УБЕРИ НАФИГ СВОЙ енум Подмигивающий

PS а ещё лучше минимально компилируемый пример выложи Веселый
Записан
daimon
Гость
« Ответ #16 : Март 27, 2012, 19:59 »

Нет сигнала - значит:
1) ты ошибся в написании (проверь 2 раза, потом ещё раз)
2) твой тип вообще не понимает Qt. Убери его наф*г  и вставь int.
3) у тебя где то ошибка в слоте Подмигивающий И да, УБЕРИ НАФИГ СВОЙ енум Подмигивающий

PS а ещё лучше минимально компилируемый пример выложи Веселый
убирал не пашет
Записан
mutineer
Гость
« Ответ #17 : Март 27, 2012, 20:03 »

убирал не пашет

не пашет - исправляй. Хочешь более развернутый ответ - давай больше информации. Процесс запускаешь?
Записан
daimon
Гость
« Ответ #18 : Март 27, 2012, 20:04 »

Код
C++ (Qt)
class CProcessThread: public QThread
{
Q_OBJECT
 
 
QString m_appStr;
QStringList m_listParam;
QProcess * m_process;
 
signals:
void finished(int , enum QProcess::ExitStatus exitStatus, CProcessThread *);
void error(enum QProcess::ProcessError, QString);
 
 
public:
CProcessThread(const QString& appStr, const QStringList& listParam);
CProcessThread();
void setParams(const QString& appStr, const QStringList& listParams);
void run();
~CProcessThread();
public slots:
void finish();
void errorFinish();
 
 
 
};
 
#include "CProcessThread.h"
 
 
 
void CProcessThread::run()
{
 
 
if(m_process == NULL)
m_process= new QProcess();
 
 
connect(m_process,SIGNAL(finished(int , enum QProcess::ExitStatus)), this, SLOT(finish()));
 
 
connect(m_process,SIGNAL(error(enum QProcess::ProcessError)), this, SLOT(errorFinish()));
 
qDebug()<<"//---------------------------//\n"<<QString("start %1 Thread").arg(m_appStr)<<m_listParam;
 
m_process->start(m_appStr, m_listParam);
 
 
exec();
 
 
 
 
}
 
void CProcessThread::setParams( const QString& appStr, const QStringList& listParams )
{
m_appStr = appStr;
m_listParam = listParams;
}
 
CProcessThread::CProcessThread( const QString& appStr, const QStringList& listParam )
{
setParams(appStr,listParam);
m_process = NULL;
 
 
}
 
CProcessThread::CProcessThread()
{
 
m_process =NULL;
 
}
 
CProcessThread::~CProcessThread()
{
qDebug()<<QString("delete %1 Thread").arg(m_appStr);
  delete m_process;
  m_process = NULL;
}
 
void CProcessThread::finish()
{
 
qDebug()<<QString("finish %1 Thread").arg(m_appStr)<<m_process->exitCode()<<m_process->exitStatus()<< m_process->errorString()<<m_process->error();
 
 
emit finished(m_process->exitCode(), m_process->exitStatus(), this);
}
 
void CProcessThread::errorFinish()
{
emit error(m_process->error(), m_process->errorString());
finish();
}
 
 
рабочий код с обычными коннектами
« Последнее редактирование: Март 27, 2012, 20:17 от daimon » Записан
Bepec
Гость
« Ответ #19 : Март 27, 2012, 20:23 »

Вот почему нормальный вроде человек, вроде имеющий опыт разработки, выкладывает НЕРАБОТАЮЩИЙ  проект без инклудов и нуждающийся в допиливании???
« Последнее редактирование: Март 27, 2012, 20:42 от Bepec » Записан
daimon
Гость
« Ответ #20 : Март 27, 2012, 20:26 »

Вот почему нормальный вроде человек, вроде имеющий опыт разработки, выкладывает НЕРАБОТАЮЩИЙ млять проект без инклудов и нуждающийся в допиливании???

#include <QtGui>

всё родное))))
Записан
mutineer
Гость
« Ответ #21 : Март 27, 2012, 20:35 »

рабочий код с обычными коннектами

То есть это работает?
Записан
daimon
Гость
« Ответ #22 : Март 27, 2012, 20:37 »

рабочий код с обычными коннектами

То есть это работает?

да

класс запускает процессы (программы) с параметрами

задача убрать коннекты для QProcess *m_process
« Последнее редактирование: Март 27, 2012, 20:39 от daimon » Записан
mutineer
Гость
« Ответ #23 : Март 27, 2012, 20:43 »

Ну для этого m_process должен иметь this родителем. Но это вряд ли получится, так как эти объекты живут в разных потоках
Записан
daimon
Гость
« Ответ #24 : Март 27, 2012, 20:46 »

самое смешное - создаю m_process в конструкторе класса и убираю создание в функции run() - ничего не работает
как?

пишет мол не могу создать ребёнок так как в разных потоках, но я ведь процесс делаю не ребёнком класса, просто создаю
« Последнее редактирование: Март 27, 2012, 20:48 от daimon » Записан
mutineer
Гость
« Ответ #25 : Март 27, 2012, 20:50 »

самое смешное - создаю m_process в конструкторе класса и убираю создание в функции run() - ничего не работает
как?

пишет мол не могу создать ребёнок так как в разных потоках, но я ведь процесс делаю не ребёнком класса, просто создаю

m_process->start(m_appStr, m_listParam); создает дочерний по отношению к m_process объект. m_process и его ребенок получаются в разных потоках

А зачем вообще весь этот код? QProcess и без того асинхронно работает
Записан
Bepec
Гость
« Ответ #26 : Март 27, 2012, 20:56 »

Кстати интересный сигнал. Который действительно возвращает enum. Походу ещё одна недоработка троллей Подмигивающий
Записан
sudo
Гость
« Ответ #27 : Март 28, 2012, 10:59 »

Кстати интересный сигнал. Который действительно возвращает enum. Походу ещё одна недоработка троллей Подмигивающий

Их over9000, которые энамы возвращают

Написал сейчас сэмпл, реально не коннектится, даже если objectName задать
« Последнее редактирование: Март 28, 2012, 11:00 от sudo » Записан
mutineer
Гость
« Ответ #28 : Март 28, 2012, 11:02 »

daimon Зачем ты везде суешь слово enum?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #29 : Март 28, 2012, 11:10 »

Написал сейчас сэмпл, реально не коннектится, даже если objectName задать
Показывай код - тоже будем пробовать.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.099 секунд. Запросов: 23.