小编POQ*_*vid的帖子

OpenMP,QTextEdit和QPlainTextEdit

在尝试了解我所知道的一切之后,甚至通过添加

QT_MainWindow::QT_MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::QT_MainWindow)
{
    ui->setupUi(this);
    qRegisterMetaType<QTextCursor>("QTextCursor");
    qRegisterMetaType<QTextBlock>("QTextBlock");
}
Run Code Online (Sandbox Code Playgroud)

对于我的源代码,我仍然无法修改QTextEdit和QPlainTextEdit中其他线程的文本,我也在使用OpenMP和Qt.

任何人都可以告诉我从QTextEdit和QPlainTextEdit中的其他线程修改文本的正确方法是什么,因为我没有找到任何关于它的帮助我

这是我的来源:

void QT_MainWindow::Load()
{
    ui->QT_PlainTextEdit->setPlainText("");

    std::ifstream file("File.txt");
    std::string line;
    #pragma omp parallel
    {
    while ( std::getline(file, line) )

    ui->QT_PlainTextEdit->appendPlainText( QString::fromStdString(line));

    file.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我设法让它像这样工作

void QT_MainWindow::Load()
{
    omp_set_dynamic(0);
    omp_set_nested(3);
    #pragma omp parallel num_threads(3)
    {
      ui->QT_PlainTextEdit->setPlainText("");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试设置文本

void QT_MainWindow::Load()
{
    omp_set_dynamic(0);
    omp_set_nested(3);
    #pragma omp parallel num_threads(3)
    {
      ui->QT_PlainTextEdit->setPlainText("TEST");
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

QObject: Cannot create children for a parent that is in a different thread.
(Parent is …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading openmp

1
推荐指数
1
解决办法
329
查看次数

标签 统计

c++ ×1

multithreading ×1

openmp ×1

qt ×1