void MainWindow::on_newPushButton_clicked()
{
if(ui->checkBox->isChecked())
{
this->hide();
this->timer=new QTimer;
QObject::connect(this->timer,SIGNAL(timeout()),this,SLOT(shotScreenSlot()));
this->timer->start(ui->delaySpinBox->value()*1000);//设置延时时间
this->timer->setSingleShot(true);
}else
{
qApp->beep();
}
}
void MainWindow::shotScreenSlot()
{
this->timer->stop();//测试了这个几乎不起作用,如果在上面不设置单次触发,那么会周期触发的
this->pixmap=QPixmap::grabWindow(QApplication::desktop()->winId());
ui->screenLabel->setPixmap(this->pixmap.scaled(ui->screenLabel->size()));
qDebug()<<"****";//测试slot函数进入几次
this->show();
}
以上就是程序最关键部分 timer设置成单次触发了,但是slot会执行两遍,不知道为什么?哪位大神遇到这种问题,求教。。。
------解决方案--------------------
这个问题其实挺简单,按钮系统有个缺省的slot 函数,命名规则刚好和你的一样了。哦!你找到答案了!。