QT:将 QString 传递给 QThread
QT : Passing QString to QThread
我想将QString
传递给线程。使用这个答案,这是我的代码:在主窗口中.cpp:
mmthread = new mythread;
mmthread->start();
connect(this,SIGNAL(sendtothread(QString)),mmthread,SLOT(getfrom_main(QString)),Qt::QueuedConnection);
emit sendtothread(mystr);
在主窗口中:
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
.谢谢。
错误:
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()
将运行一个事件循环,该循环将处理您的所有信号和插槽。
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- 如何监控QThread
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- 等待 qthread 终止的正确方法是什么?
- 如何正确停止运行非循环QThread?
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 为什么使用 QString::right 在字符串开头省略逗号?
- Qt:更新 QString 时自动生成的代码失败
- Valgrind 在 QThread::start() 上报告内存泄漏
- 如何将 QString 的 QList 分配给列表视图?
- 加倍到 QString 并保存在 QJsonDocument 中
- 如何将包含指数的 QString 转换为C++中的双倍?
- 如何在 QThread 中传递引用
- 是否可以直接将QString输入(例如)googletest的ADD_FAILURE()宏?
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 通过信号/插槽机制将 QString 传递给 QThread
- QT:将 QString 传递给 QThread