我在Qt工作,当我按下GO按钮时,我需要不断将软件包发送到网络并使用收到的信息修改界面。
问题是我while(1)
在按钮中有一个,所以按钮永不结束,所以界面永不更新。我想在按钮中创建一个线程并将while(){}
代码放在那里。
我的问题是如何从线程修改接口?(例如,如何从线程修改textBox?
关于Qt的重要一点是, 必须 仅从GUI线程(即主线程)使用Qt GUI。
这就是为什么执行此操作的正确方法是从worker 通知 主线程,并且主线程中的代码实际上将更新文本框,进度栏或其他内容。
我认为,做到这一点的最佳方法是使用QThread而不是posix线程,并使用Qt 信号
在线程之间进行通信。这将是您的工作人员,是以下人员的替代者thread_func
:
class WorkerThread : public QThread {
void run() {
while(1) {
// ... hard work
// Now want to notify main thread:
emit progressChanged("Some info");
}
}
// Define signal:
signals:
void progressChanged(QString info);
};
在窗口小部件中,定义一个与.h中的信号具有相同原型的 插槽 :
class MyWidget : public QWidget {
// Your gui code
// Define slot:
public slots:
void onProgressChanged(QString info);
};
在.cpp中实现此功能:
void MyWidget::onProgressChanged(QString info) {
// Processing code
textBox->setText("Latest info: " + info);
}
现在在您要生成线程的位置(单击按钮):
void MyWidget::startWorkInAThread() {
// Create an instance of your woker
WorkerThread *workerThread = new WorkerThread;
// Connect our signal and slot
connect(workerThread, SIGNAL(progressChanged(QString)),
SLOT(onProgressChanged(QString)));
// Setup callback for cleanup when it finishes
connect(workerThread, SIGNAL(finished()),
workerThread, SLOT(deleteLater()));
// Run, Forest, run!
workerThread->start(); // This invokes WorkerThread::run in a new thread
}
将信号和插槽连接后,emit progressChanged(...)
在工作线程中发出带有插槽的插槽将向主线程发送消息,并且主线程将在onProgressChanged
此处调用与该信号连接的插槽。
附言:我尚未html" target="_blank">测试代码,所以如果我在某处输入错误,请随时提出修改建议
我需要在我的GWT应用程序中使用Kie Workbench中使用guided rules editor定义的规则。我相信一旦用户添加/修改并保存规则,它就会被保存到git存储库中。 我已经尝试了这样一种方法,我可以修改规则,然后构建和部署,它将作为一个工件部署到本地maven存储库,可以通过HTTP访问,并执行前面提到的规则,直接从存储库中加载Drools/Kie Workbench工件。但是这种
问题内容: 我刚刚为iPhone和新的Xcode下载了iOS 13。我想测试适用于iOS 13的应用程序,但是当我尝试运行应用程序时,几秒钟后会出现错误。错误: 由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“从主线程访问布局引擎后,不得从后台线程对其进行修改。” ***第一掷调用堆栈:(0x191ea9c30 0x191bc40c8
通过此功能可以设置网站后台的访问路径 这里填写你需要设置的后台访问域名,例如:admin.domain.com 在该域名解析到您的网站服务器后,只能通过该域名登陆 配置保存在/caches/configs/system.php中,修改参数admin_url可手动取消绑定
线索工作台 市场人员在营销通也可以查看所有市场渠道获取的线索列表,在这里可以查看线索的来源、来自于哪场市场活动,当前所在线索池,以及线索状态等; 选中线索或点击线索名称进入线索详情页面,可对线索进行管理;
我在理解中线程安全的细节时遇到了问题。我知道Hibernate会话本身不是线程安全的,所以我不会从多个线程访问它们。但是,我找不到任何有关Hibernate实体的线程安全的信息。我可以在多个线程中修改它们,而它们仍然连接到用于加载它们的会话吗? 我不会使用延迟加载(我知道这会导致并发问题)。实体将被正确同步,Hibernate将通过同步的getters访问它们。 我设想的情景是: 使用Hibern
问题内容: 使用swift在我的OS X中经常遇到此错误: “此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃。这将在以后的版本中引发异常。” 我有一个 NSWindow ,正在交换视图到窗口的视图。尝试在窗口上执行操作或在窗口上添加操作时,都会收到 错误消息 。试图禁用自动调整大小的东西,并且我没有使用自动布局的东西。有什么想法吗? 有时候很好,什么也没发生,其他时候却完