我用两种不同的背景两次调用背景函数。我设置了usleep(1000),但不起作用。我的系统是linux,运行的是Qt 4.8。

main.cpp

MainWindow w;
w.setBg('A');
usleep(1000);
w.setBg('B');


在mainwindow.cpp中,有setBg(char c)switch可以在两个背景之间进行选择。

如何用switch调用第一个usleep,然后切换到另一个?

我应该重新加载小部件吗?

最佳答案

对于这种类型的任务,阻塞GUI内循环的任务是不正确的,因为在您处于睡眠状态时,建议使用QTimer,如下所示:

/*Qt5*/
MainWindow w;
w.setBg('A');
w.show();

QTimer::singleShot(1 /*in ms*/, [&w](){
    w.setBg('B');
});

/*Qt4*/
/*on MainWindow*/

private slots:
    void mySlot(){
        setBg('B');
    }
/*constructor*/
    QTimer::singleShot(1000, this, SLOT(mySlot()));

关于c++ - 如何使用usleep()设置背景?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46546194/

10-11 18:46