|
(1) connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
(2) connect(slider, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int)));
第一句中,什么地方把slider的新值传递给slot的呢?还是说这个connect函数本身就是其这个作用的,只要SIGNAL()和SLOT()这两个括号中的数据类型是一致的就可以配对使用呢?如果是这样,我是否可以控制SIGNAL送出的数据呢?比如在第二句中,当slider值改变这个信号来的时候,我让this发出一个比如时间或者别的信号,能不能这么做呢?
(1)中, slider的valueChanged的时候就会把int值传给slot display函数
假设一个下拉框在mainwindow里面,同时还有一个文本行,定义如下:
QComboBox *QCB_abc;
QTextEdit *QTE_abc;
下拉框QComboBox控件有以下signal函数,可以直接调用
void QComboBox::currentIndexChanged ( const QString & text ) [signal]
你在mainwindow里面定义slot函数display(const QString & text )
void mainwindow::display(const QString & text )
{
QTE_abc->setText (text ); // show the text of combo box to mainwindow
}
在mainwindow的构造函数里面, 有以下语句:
// 实例化QCB_abc
// 添加下拉框QCB_abc里面的内容
// 实例化QTE_abc
connect(QCB_abc, SIGNAL(currentIndexChanged (const QString & text )), this, SLOT(display()));
....
在运行以后,出现mainwindow,里面有个下拉框和文本框, 当你改变下拉框的值得时候, 改变的值会出现在文本框里面。
(2) 你不可以将一个signal传给另外一个signal, 信号只是信号, 并不触发任何事件, 你需要调用slot函数来触发事件。
不同控件有哪些signal可以直接用,或者有哪些现成的slot函数可以直接调用,你可以直接查qt帮助文档。 |
|