QT:将QString传递给QThread

时间:2016-07-12 11:17:56

标签: c++ qt

我想将QString传递给一个帖子。使用this回答, 这是我的代码: 在 MainWindow.cpp

mmthread = new mythread;
        mmthread->start();

        connect(this,SIGNAL(sendtothread(QString)),mmthread,SLOT(getfrom_main(QString)),Qt::QueuedConnection);

        emit sendtothread(mystr);
mainwindow.h

signals:
    void sendtothread(QString);
mythread.cpp

中的

void mythread::getfrom_main(QString str)
{
    //something
}

mythread.h

public slots:
    void getfrom_main(QString);

但似乎根本没有调用getfrom_main。 我的错误在哪里?

修改

我有3个类似的线程:

mythread.cpp

中的

mythread :: mythread()
{
    moveToThread(this);
}
void mythread::run(){
    //something1
}
void mythread::getfrom_main(QString comm)
{
    comment = comm;
    emit message(comment);
}

mythread.h

    class mythread : public QThread
{
    Q_OBJECT
public:
    explicit mythread();
    void run();
signals:
    void message (QString);
private:
       QString comment;
public slots:
    void getfrom_main(QString);
};

something1总是在我的所有主题中执行。but not about getfrom_main。谢谢。

1 个答案:

答案 0 :(得分:1)

错:

mythread :: mythread()
{
    moveToThread(this); // you don't need to do it
}

错误(您真的不需要在代码中继承QThread):

void mythread::run()
{
    //something1
    // after "something" you need to run an event loop:
    exec();
}

exec()将运行一个事件循环,处理所有信号和插槽。