我使用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
中定义的。