当按钮按下需要更长的时间时,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 按钮,防止变暗叠加?