gpt4 book ai didi

c++ - 在特定时间更改 QLabel 的背景颜色

转载 作者:行者123 更新时间:2023-11-30 04:57:17 25 4
gpt4 key购买 nike

我的 Qt 代码中有一个具有已定义背景颜色的 QLabel。

我会在函数中仅更改背景颜色一秒钟,然后将其设置回原始颜色。

我考虑过使用 sleep() 函数,但有没有一种方法可以在不阻塞其余程序事件的情况下做到这一点?

谢谢!

最佳答案

你必须使用 QTimer::singleShot(...)QPalette:

#include <QApplication>
#include <QLabel>
#include <QTimer>

class Label: public QLabel{
public:
using QLabel::QLabel;
void changeBackgroundColor(const QColor & color){
QPalette pal = palette();
pal.setColor(QPalette::Window, color);
setPalette(pal);
}
void changeBackgroundColorWithTimer(const QColor & color, int timeout=1000){
QColor defaultColor = palette().color(QPalette::Window);
changeBackgroundColor(color);
QTimer::singleShot(timeout, [this, defaultColor](){
changeBackgroundColor(defaultColor);
});
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Label label;
label.setText("Hello World");
label.show();
label.changeBackgroundColorWithTimer(Qt::green, 2000);
return a.exec();
}

关于c++ - 在特定时间更改 QLabel 的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091127/

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