Ric*_*het 3 c++ qt qt4 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();
};
Run Code Online (Sandbox Code Playgroud)
在我的源代码中我正在做的是在连接到数据库之后,我想要一个标签来改变背景颜色(有点像发光效果),所以我尝试从一个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);}");
}
Run Code Online (Sandbox Code Playgroud)
但它在构建时显示错误 - >
/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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |