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

Posted

技术标签:

【中文标题】当按钮按下需要更长的时间时,Windows 会变暗【英文标题】:Windows becomes dim when button press takes longer time 【发布时间】:2015-04-14 02:34:29 【问题描述】:

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

例如: 文件 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()


有什么解决办法吗?

谢谢, 约翰

【问题讨论】:

QRunnable / QtConcurrent. 【参考方案1】:

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

Threading in QT

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

【讨论】:

以上是关于当按钮按下需要更长的时间时,Windows 会变暗的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverController 按钮,防止变暗叠加?

UIAlertView 开始显示,屏幕变暗,但直到为时已晚才弹出!

点击时使 UIButton 文本变暗

iOS 14 菜单选择器样式的标签在更改时有时会变暗

为什么写入Canvas的文本在两次写入同一位置时会变暗?

当时间指示器位于 R 中的列名中间时,透视更长的数据