先に結論
QTimerのtimeout関数に、{}を渡すだけ。
timer->timeout({});
使いどころあるの?
timeoutシグナルに対してconnectしたスロット関数を、以降変更しないのであれば、QTimerをstartする前に直接スロット関数を1回呼んでやればいいだけですね。
ですが、条件によってconnectするスロット関数を変える場合、timeoutを呼ぶだけの方が便利です。
サンプル
ボタンとラベルを配置。
ボタンを押すと、押した瞬間にラベルの数値がインクリメントされ、以降ボタンを押している間、1秒毎にインクリメントされます。
ヘッダ。
class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButton_pressed(); void on_pushButton_released(); private: Ui::MainWindow *ui; QTimer *timer; int val; void timerFunc(); };
ソース。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), timer(nullptr), val(0) { ui->setupUi(this); ui->label->setText(QString::number(val)); timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &MainWindow::timerFunc); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_pressed() { timer->timeout({}); timer->start(1000); } void MainWindow::on_pushButton_released() { timer->stop(); } void MainWindow::timerFunc() { val++; ui->label->setText(QString::number(val)); }