最近在学习qt tutorial。今天学习到了
t7,遇到点有点麻烦。
t7的lcdrange.cpp中,有两个成员函数是这样实现的
LCDRange::LCDRange(QWidget *parent)
:QWidget(parent)
{
QLCDNumber *lcd = new QLCDNumber(2);
lcd->setSegmentStyle(QLCDNumber::Filled);
slider = new QSlider(Qt::Horizontal);
slider->setRange(0,99);
slider->setValue(0);
connect(slider, SIGNAL(valueChanged(int)),
lcd, SLOT(display(int)));
connect(slider, SIGNAL(valueChanged(int)),
this, SIGNAL(valueChanged(int)));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
}
void LCDRange::setValue(int value)
{
slider->setValue(value);
}
而我做了两处修改
LCDRange::LCDRange(QWidget *parent)
:QWidget(parent)
{
QLCDNumber *lcd = new QLCDNumber(2);
lcd->setSegmentStyle(QLCDNumber::Filled);
slider = new QSlider(Qt::Horizontal);
slider->setRange(0,99);
slider->setValue(0);
connect(slider, SIGNAL(valueChanged(int)),
lcd, SLOT(display(int)));
// connect(slider, SIGNAL(valueChanged(int)),
// this, SIGNAL(valueChanged(int))); QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
}
void LCDRange::setValue(int value)
{
slider->setValue(value);
emit valueChanged(value); }
结果LCDRange就不对外发送signal了。
哪位大侠能小弟解一下惑,解释一下为什么这里只能用connect连接两个SIGNAL。
使用emit就不行?
[ 此贴被XChinux在2008-07-18 14:03重新编辑 ]