gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:43:26 25 4
gpt4 key购买 nike

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

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