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

标签 c++ qt qt4 qthread

我试图实现QT Qthread的休眠功能,所以我在头文件中声明为--

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();
};

在我的源代码中,我正在做的是在连接到数据库之后,我想要一个标签来改变背景颜色(有点像发光效果),所以我尝试从内部调用 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++ - 使用 QThread 显示构建问题的时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27477830/

相关文章:

c++ - 如何设置一个简单的 CGAL + Qt 程序

qt - 在 QTableWidget 中拖放行

c++ - Qt 忽略 const 说明符

c++ - QTableView:如何在开始/结束编辑时做些什么?

c++ - 如何快速判断一个int有多少位?

c++ - Qt 自定义小部件不显示子小部件

C++/Qt - 析构函数中出现异常 -> 已调用中止

c++ - QMap 或 QHash 中的 QSet

c++:传递给函数后数组的大小发生变化

c++ - 在基本类型上使用 std::declval