我试图实现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/