我使用QLCDNumber制作了一个计时器,以显示在状态栏中。我试图连接到我的插槽。但是,似乎从未调用过该插槽。谁能告诉我发生了什么问题?

谢谢。

顺便说一句,如果我要使用这种方法,计时器会根据时钟时间的滴答作响吗? (即,当秒数达到59时,它将重置为0,而分钟将变为1。)

我的.h:

class StatusBar : public QStatusBar, QLCDNumber
{
    Q_OBJECT
public:
    StatusBar()
    {
        m_simulation = 0;
        createButtons();
    };
    ~StatusBar() { };

public slots:
    void countUp();

private:
    QLCDNumber *lcdSimulation;
    int m_simulation;
    QTimer *simulationTimer;
};

我的.cpp:
void StatusBar::createButtons()
{
    ...

    lcdSimulation = new QLCDNumber;
    lcdSimulation->setNumDigits(8);
    lcdSimulation->display("12:00:00");
    simulationTimer = new QTimer;
    simulationTimer->start(5000);
    QObject::connect(simulationTimer, SIGNAL(timeout()), lcdSimulation, SLOT(countUp()));
    addWidget(lcdSimulation);

    ...
}

void StatusBar::countUp()
{
    m_simulation++;
    lcdSimulation->display(m_simulation);
}

最佳答案

问题似乎出在信号的目标对象不正确。

错误

QObject::connect(simulationTimer, SIGNAL(timeout()), lcdSimulation, SLOT(countUp()));

正确
QObject::connect(simulationTimer, SIGNAL(timeout()), this, SLOT(countUp()));

因为您的countUp()是在StatusBar类而不是QLCDNumber中定义的。

10-08 19:40