Multithreading 从另一个线程读取Qt小部件可以吗?
我发现很多答案都说从另一个线程访问QtGUI小部件是不安全的。如果我们尝试修改小部件,我同意这一点。但如果我只读取widget的值,而不进行任何修改,会怎么样? 我已经使用Qt设计了一个GUI工具,我的工作线程直接读取小部件,例如,获取QLineEdit的文本,获取QComboBox的值,等等,我没有发现任何问题。 我将主窗口的指针传递给工作线程。Multithreading 从另一个线程读取Qt小部件可以吗?,multithreading,qt,Multithreading,Qt,我发现很多答案都说从另一个线程访问QtGUI小部件是不安全的。如果我们尝试修改小部件,我同意这一点。但如果我只读取widget的值,而不进行任何修改,会怎么样? 我已经使用Qt设计了一个GUI工具,我的工作线程直接读取小部件,例如,获取QLineEdit的文本,获取QComboBox的值,等等,我没有发现任何问题。 我将主窗口的指针传递给工作线程。 这真的不安全吗?首先:从另一个线程读取属性而不保护内存总是一个坏主意 你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那
这真的不安全吗?首先:从另一个线程读取属性而不保护内存总是一个坏主意 你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那么就没有问题。但如果您更改QComboBox的值,例如单击向上箭头、向下箭头或选择一个新项目,我希望您会这样做,因为这就是使用a的原因,如果工作线程希望在同一时刻读取该值,则该值将被写入,然后应用程序可能崩溃。出现carsh的可能性取决于线程提取信息的频率 您的应用程序从未崩溃,因为该条件从未出现。
但这并不意味着这不可能发生。首先:在不保护内存的情况下从另一个线程读取属性总是一个坏主意 你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那么就没有问题。但如果您更改QComboBox的值,例如单击向上箭头、向下箭头或选择一个新项目,我希望您会这样做,因为这就是使用a的原因,如果工作线程希望在同一时刻读取该值,则该值将被写入,然后应用程序可能崩溃。出现carsh的可能性取决于线程提取信息的频率 您的应用程序从未崩溃,因为该条件从未出现。
但这并不意味着这不可能发生。听起来合理。听起来合理。