我想将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
。谢谢。
答案 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()
将运行一个事件循环,处理所有信号和插槽。