Skip to main content
 首页 » 编程设计

c++之Qt:定期调用带参数的函数

2024年04月18日26mq0036

问题: 我有一个函数 void myFunc(data)

我正在使用 QSqlQuery 从数据库读取数据:

QSqlQuery qry; 
if (qry.exec("SELECT data, interval from table")) 
{ 
   while(qry.next()) 
   { 
       // Somehow create and call function: myFunc(int data) periodically with interval = interval 
   } 
} 

据我所知,我可以使用这样的计时器:

QTimer *timer = new QTimer(this); 
connect(timer, SIGNAL(timeout()), this, SLOT(myFunc())); 
timer->start(interval); //time specified in ms 

但是当我创建这个计时器时,如何将参数data传递给myFunc

请您参考如下方法:

如果您使用 C++11,则可以将计时器连接到 lambda 函数,在其中捕获数据值。

示例(未经测试):

int interval = 500; 
int data = 42; 
 
QTimer *timer = new QTimer(this); 
connect(timer, &QTimer::timeout, [data] { 
    /* Implement your logic here */ 
});