У меня есть функция которая вызывается отдельным потоком и поток отделяется:
std::thread thr(IncrementTime:: incTime);
thr.detach();
Эта функция представляет собой бесконечный цикл.
Задача стоит в том, чтобы изменять label формы(Widget) после каждого прохождения цикла.
Части кода:
IncrementTime.h
#ifndef INCREMENTTIME_H
#define INCREMENTTIME_H
class IncrementTime
{
public:
static void incTime();
};
#endif // INCREMENTTIME_H
IncrementTime.cpp
#include "incrementtime.h"
#include "global_objects.h"
#include <windows.h>
#include "widget.h"
void IncrementTime::incTime(){
Widget widg;
while(1){
sec++;
if(sec == 60){
sec = 0;
}
//тут выпадает ошибка
widg.smena(); //Cannot create children for a parent that is in a
Sleep(1000); //different thread
}
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "global_objects.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::smena(){
ui->label_3->setText(QString::number(sec));
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void smena();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
Работать с GUI можно только из основного потока программы. В вашем случае поток должен не сам изменять значения на виджете, а отправлять ему сигнал для изменения данных, чтобы все изменения происходили в главном потоке. Отдельный поток нужен, если вычисления требуют много времени и интерфейс постоянно зависает, но если в вашем incTime() нет ничего другого, то логичнее использовать таймер и не заморачиваться с потоками.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задание: необходимо реализовать ИИ при игре в крестики-нолики на джавеСамый первый шаг рандомный выбор ячейки и проверка соседних ячеек...
Выводит эти значения, но RUB,PLN,JPY,DKK и так дальше, не форматированы