QT中使用信号和槽机制实现事件驱动,即用QObject::connect函数将事件与处理函数相对应,原型为inline bool QObject::connect(const QObject *asender, const char *asignal,const char *amember, Qt::ConnectionType atype) const
{ return connect(asender, asignal, this, amember, atype); }
以下例程显示一个滑动杆(slider),和数据感知(spinBox)控件,并设置他们之间的信号机制:
#include <QApplication>
#include <QtGui/QHBoxLayout>
#include <QtGui/QSlider>
#include <QtGui/QSpinBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *window=new QWidget;
window->setWindowTitle("Enter Your Age");
QSpinBox *spinBox=new QSpinBox;
QSlider *slider=new QSlider(Qt::Horizontal);
spinBox->setRange(0,130);
slider->setRange(0,130);
QObject::connect(spinBox,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));
QObject::connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));
spinBox->setValue(35);
QHBoxLayout *layout=new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);
window->show();
return a.exec();
}