当按下按钮需要更长的时间时,窗口会变暗

Windows becomes dim when button press takes longer time

本文关键字:时间 窗口 按钮      更新时间:2023-10-16

如何防止主窗口变暗,即使按钮单击事件也需要很长时间才能响应。

例如:文件 myframe.h

class MyFrame : public QFrame
{
    Q_OBJECT
public:
explicit MyFrame(QWidget *parent=0);
~MyFrame();
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent *event);
private:
Ui::MyFrame *ui;
}
file myframe.cpp
MyFrame::MyFrame(QWidget *parent):
    QFrame(parent),ui(new Ui::FerryFrame)
{
    ui->setupUi(this);
}
void MyFrame::mouseReleaseEvent(QMouseEvent *event)
{
// do something cost long time,
// this will make the frame background becomes dim, 
}
MyFrame::~MyFrame()
{
}

有什么解决办法吗?

谢谢John

您需要为长时间运行的操作启动线程。 您可能需要在线程运行时手动灰/暗按钮或其他选项,以防止用户一遍又一遍地发出相同的命令。 有关线程的详细信息,请参阅 QT 文档:

QT 中的线程

特别注意线程池。 它们对于 GUI 事件很有用。 还要注意从线程更新用户界面的复杂性。