QThread,在线程上创建GUI小部件元素
QThread, creating GUI widget element on a thread
我已经尝试了一段时间,因为我没有找到太多关于它的信息,所以它似乎并不常见。
我有一个QTree,我在其中放置项目,在我的项目上,第一列有一个复选框。
问题:复选框没有优化为按原样处理,一旦有几个元素,就需要相当长的时间。
因此,在放入列表之前,我使用一个线程来创建复选框,但似乎不可能在GUI线程上重新获得复选框。
void CheckItemThread::run()
{
setPriority(QThread::IdlePriority);
QCheckBox *m_check;
m_check = new QCheckBox();
emit done(m_check);
}
我的主线程:
myCheckItem::myCheckItem(QTreeWidget *parent, QStringList columnNames ):
myWidgetItem(parent)
{
m_parent = parent;
m_columnNames = columnNames;
connect(&TheThread,SIGNAL(done(QCheckBox *)), this, SLOT(retThread(QCheckBox *)));
connect(&TheThread,SIGNAL(terminated()), this, SLOT(endThread()));
TheThread.setdata(columnNames,parent, this);
TheThread.start(); //run thread
}
void myCheckItem::endThread()
{
m_check->setParent(m_parent);
connect(m_check, SIGNAL(stateChanged(int)), this, SLOT(onCheckBox(int)));
}
void myCheckItem::retThread(QCheckBox *check)
{
m_check = check;
}
也许我遗漏了什么,或者根本不可能重新连接螺纹?
感谢
您不得在其他线程中创建、编辑或使用UI元素。UI元素必须在主线程(UI线程)中使用。如果在"绘制"复选框之前有耗时的先决条件,请在线程(最终为QtConcurrent
)中进行操作,并向主线程发送创建相应复选框的信号。
您只能在主线程中更改GUI元素。你有多少个复选框?也许您应该创建有限数量的复选框,并在需要时重用它们?
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 创建小部件的GUI菜单不会出现在QT创建者中
- QT:类的访问功能,该功能使用构造函数外的GUI小部件
- C++ Qt如何通过小的更改创建GUI的副本
- QT gui 项目不会缩小到 ft 到它们的父小部件
- 简单qt-gui;重复的小部件
- C++ 创建小部件数组
- GUI软件设计模式,用于在运行时管理多个小部件
- QT 小部件与 QT GUI
- 如何开始使用自定义 GUI 小部件
- QThread,在线程上创建GUI小部件元素
- 我的 GUI 的模板化小部件系统出现问题
- 如何使用Qt创建正确的GUI小部件
- VTK Qt小部件抛出运行时错误时,放置在GUI
- 小部件必须在GUI线程Error中创建.如何纠正代码
- QT中的自定义外观svg GUI小部件,性能非常差
- 如何在FLUID gui编辑器中旋转小部件