Сигнал о том, чтобы нить не была доставленаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сигнал о том, чтобы нить не была доставлена

Сообщение Anonymous »

Я начал с этой ошибки, также подозрительно, что программа выполняла последовательно, несмотря на мои попытки нанести ее ... < /p>

Код: Выделить всё

QObject::moveToThread: Cannot move objects with a parent
Кроме того, qdebug ()
к этому < /p>
SDS::SDS(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::SDS)
{
[/code]
Теперь ошибка исчезла, но мой сигнал из главного окна не появляется в соответствующем потоке, хотя .isrunning () возвращает true
mainwindow.cpp
> SDS::SDS(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::SDS)
{
ui->setupUi(this);
qRegisterMetaType< Settings >();
connect(this, SIGNAL(SendTopHandles(Settings&)), &Top_Calc, SLOT(ReceiveHandles(Settings&)));

Top_Calc.moveToThread(&TopThread);
TopThread.start();
}

int SDS::on_StartScan_clicked() {
emit SendTopHandles(RunSet);
}
< /code>
mainwindow.h
class SDS : public QMainWindow
{
Q_OBJECT

public:
explicit SDS(QWidget *parent = 0);
protected:
Settings RunSet;
private:
Ui::SDS *ui;
QThread TopThread;
TopCalc Top_Calc;
signals:
void SendTopHandles(Settings& RunSet);
}
< /code>
calcthreads.h
class TopCalc : public QObject
{
Q_OBJECT
public:
explicit TopCalc(QObject *parent = 0);

protected:
Settings* RunSet;
public slots:
void ReceiveHandles(Settings& RunSet);
}
< /code>
calcthreads.cpp
TopCalc::TopCalc(QObject *parent) :
QObject(parent)
{
}

void TopCalc::ReceiveHandles(Settings& S) {
RunSet = &S;
}
< /code>
Программа никогда не попадает в функцию DeceyHandles. Это продолжается в более поздних командах. Если я удалю родителя QObject из файла конструктора и заголовка, я получаю тот же результат.
Должен ли я положить переменные потока в функцию Main () вместо конструктора пользовательского интерфейса, как показывают многие примеры?>

Подробнее здесь: https://stackoverflow.com/questions/426 ... -delivered
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»