c – 使用QThread显示构建问题的时间延迟

我正在尝试实现QT Qthread的sleep函数,所以我在头文件中声明为 –

namespace Ui {
    class MainWindow;
}
class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    static void sleep(unsigned long secs){QThread::sleep(secs);}
protected:
    void changeEvent(QEvent *e);
private:
    Ui::MainWindow *ui;
private slots:
    void on_pushButton_clicked();
};

在我的源代码中我正在做的是在连接到数据库之后,我想要一个标签来改变背景颜色(有点像发光效果),所以我尝试从一个while(true)循环内部调用sleep函数.

while(db.open())
{
    MainWindow::sleep(13);

    qDebug()<<"Success ";
    ui->glow_label->setStyleSheet("QLabel {background-color: rgb(0,255,0);}");

    MainWindow::sleep(5);
    ui->glow_label->setStyleSheet("QLabel {background-color: rgb(0,85,255);}");
}

但它在构建时显示错误 – >

/usr/local/Trolltech/Qt-4.8.4/include/QtCore/qthread.h:115:错误:’static void QThread :: sleep(long unsigned int)’受保护
/home/aj/MY_QT_WORK/timer_test/mainwindow.h:22:错误:在此上下文中

我做错了什么想法?

解决方法

在主线程中使用sleep()是个坏主意,因为它会阻塞所有GUI线程. Qt测试库对于生产而言太重了.因此,请尝试仅使用QTimer或尝试以下方法

void sleep(qint64 msec)
{
    QEventLoop loop;
    QTimer::singleShot(msec,&loop,SLOT(quit()));
    loop.exec();
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...