1

1 つの .cpp (つまり、ExerciseControl.cpp) にツール ボタンがあります。ボタンをクリックすると、別の .cpp (つまり、StatusBar.cpp) で 2 つのタイマーがトリガーされます。

ただし、次のコードは機能しません。タイマーは、ExerciseControl.cpp のボタンをクリックして startExercise() をトリガーしても開始しません。

ExerciseControl.cpp:
ExerciseControl::ExerciseControl(void)
{
    myStatusBar = new StatusBar;
}

void ExerciseControl::startExercise()
{
    myStatusBar ->simulationTimer->start(1000);
    myStatusBar ->elapsedTimer->start(1000);
}


StatusBar.cpp:
StatusBar::StatusBar()
{
    simulationTimer = new QTimer;
    QObject::connect(simulationTimer, SIGNAL(timeout()), this, SLOT(tickSimulation()));
    elapsedTimer = new QTimer;
    QObject::connect(elapsedTimer, SIGNAL(timeout()), this, SLOT(tickSimulation()));

    createButtons();
};

void StatusBar::createButtons()
{
    ...
}

void StatusBar::tickSimulation()
{
    ...
}

ただし、コンストラクターで次のように宣言すると、タイマーが自動的に開始されますが、これは望ましくありません。

StatusBar::StatusBar()
{
    simulationTimer = new QTimer;
    simulationTimer->start(1000);
    QObject::connect(simulationTimer, SIGNAL(timeout()), this, SLOT(tickSimulation()));
    elapsedTimer = new QTimer;
    elapsedTimer->start(1000);
    QObject::connect(elapsedTimer, SIGNAL(timeout()), this, SLOT(tickSimulation()));
}

ExerciseControl.cpp のボタンからタイマーをトリガーする必要があります。

助けてください。

ありがとう。

4

1 に答える 1