Witam,
Mam problem z dostępem do głównego okna z poziomu wątku. Gdy funkcja jest uruchamiana w tym samym wątku działa ok, jeśli uruchomię ją w nowym wątku, tekst wysyłany do głównego okna nie jest odświeżany. Pojawia się dopiero po zaznaczeniu blokiem tekstu lub po wysłaniu kolejnej linii danych.
Co zmienić, żeby w przyszłości uniknąć podobnych problemów?
plainTextEdit generowany jest z mainwindow.ui
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
namespace Ui
{
class MainWindow;
class myThread;
}
class myThread : public QThread
{
Q_OBJECT
public:
virtual void run();
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
friend int funkcja(MainWindow* mw);
public slots:
void pbStartClicked();
private:
Ui::MainWindow *ui;
myThread *myt;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow *cpmw;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
QTextCodec::setCodecForTr (QTextCodec::codecForName ("UTF-8"));
ui->setupUi(this);
myt = new myThread();
cpmw = this;
}
MainWindow::~MainWindow()
{
delete ui;
}
void myThread::run()
{
funkcja(cpmw);
}
int funkcja(MainWindow* mw)
{
mw->ui->plainTextEdit->appendPlainText("START");
return 0;
}
void MainWindow::pbStartClicked()
{
myt->start();
}