gpt4 book ai didi

qt - 如何使 QPushButton 保持按下状态直到过程完成?

转载 作者:行者123 更新时间:2023-12-05 02:16:54 25 4
gpt4 key购买 nike

我有一个按钮,单击该按钮将运行后端进程,比如说 10 秒。我想让按钮处于按下状态,直到过程完成,然后释放按钮。这是为了让用户知道该过程何时完成。例如:

QString ExButtonStyleSheet = "QPushButton{background-color:lightgreen;}\
QPushButton:hover{background-color:yellow;}\
QPushButton:pressed{background-color:green;}\
QPushButton:disabled{background-color:grey;}";

在上面的例子中,一旦点击按钮进入悬停状态(黄色),即使进程正在运行(GUI 也很忙)并且一旦空闲就会变成浅绿色。但这对用户来说不是很明确,不像按下状态。(注意上面的样式表只是一个例子,在我的实际样式表中,悬停状态颜色与正常颜色仅略有不同。)我正在寻找一种解决方案,使按钮看起来仍然处于按下状态,并且仅在该过程完成后才被释放。

最佳答案

理论上可以用

QPushButton::setCheckable(true)
QPushButton::setDown(true) // Button is down
// Expensive task
QPushButton::setDown(false) // Button is released

卡住 GUI 10 秒是一个非常糟糕的主意。

您应该为昂贵的任务使用线程,而不是阻塞 GUI。调用 QPushButton::setDown(true) 并向包含昂贵任务代码的线程发出信号。

当线程完成时,线程应该调用 MainWindow 中包含 QPushButton::setDown(false) 的插槽。这样,您的 GUI 将在这段时间内完全响应,并且您遵循良好的编码行为。

关于qt - 如何使 QPushButton 保持按下状态直到过程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com