Как подключить сигнал из потока qconcurrent к потоку графического интерфейса, разделяющему одну строкуC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как подключить сигнал из потока qconcurrent к потоку графического интерфейса, разделяющему одну строку

Сообщение Anonymous »

Я пытаюсь обновить метку пользовательского интерфейса, указав информацию о другом потоке (QString).

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

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

public Q_SLOTS:
void sl_appendInfo(QString p_text);

private:
Ui::MainWindow *ui;
QFuture m_thread;
QFuture m_engine;
engine* m_object;
};

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
m_object = new engine();

qRegisterMetaType();
bool success = connect(this->m_object, SIGNAL(engine::sig_appendInfo(QString)), this, SLOT(sl_appendInfo(QString)), Qt::QueuedConnection);

if(!success)
{
qDebug("success failed");
}

m_engine = QtConcurrent::run(this->m_object, &engine::eventLoop);
}

//slot declaration in mainwindow.cpp
void MainWindow::sl_appendInfo(QString p_text)
{
ui->label->setText(p_text.toLocal8Bit().constData());
}

class engine : public QObject
{

Q_OBJECT

public:
engine();
~engine();
void eventLoop();

Q_SIGNALS:
void sig_exitengine(void);
void sig_appendInfo(QString p_text);
};

void engine::eventLoop()
{
int state = false;

while(true)
{
state = getNextEvent(m_event);

if (state == true)
{
sig_appendInfo("information for gui: we handled a new event !");
state=false;
}
QThread::msleep(1000);
}
}
Теперь я использую эту ссылку: Мое соединение сигнала/слота не работает для создания моего собственного кода, но оно не сработало, соединение не удалось... Могу ли я помогите, пожалуйста?

Спасибо

Подробнее здесь: https://stackoverflow.com/questions/435 ... one-string
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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