3.2 在Qt Designer中建立信号和槽

第2章我们已经通过Qt Designer学习了对菜单等动作信号的响应,在Qt Designer中,右击鼠标,在弹出的快捷菜单中选择go to slot命令可以很快在主窗口中建立对信号的响应。在5.2.1节,我们还将介绍利用可视化方法定义信号和槽的关联。

本节我们继续用Qt Designer使用Qt预定义的信号和槽。下面的例子,建立整数旋转框和滑动条间的关联,使得数据的变化能够联动。

(1)新建一个工程ch3,在主窗口中添加一个整数旋转框SpinBox和一个水平方向的滑动条horizontalSlider,在信号和槽编辑面板中,单击加号,选择发送者horizontalSlider,在信号中选择valueChanged,选择spinBox为接收方,槽中的操作为setValue;用同样的方法,建立spinBox到horizontalSlider的连接,如图3-2所示。

图3-2 信号和槽关联的示意程序设计界面

(2)选中SpinBox后右击,在弹出的快捷菜单中选择go to slot命令,在出现的对话框中,选择valueChanged(QString)信号,如图3-3所示。

图3-3 选择spinBox的信号响应槽

(3)添加以下代码,在状态栏显示数值。

void MainWindow::on_spinBox_valueChanged(QString)
{
    ui->statusBar->showMessage(QString);
}

(4)上述过程中,Qt根据设计的Form文件,在ui_mainwindow.h中自动添加了关联代码。

void setupUi(QMainWindow *MainWindow)
{
    …
    QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
    QObject::connect(spinBox, SIGNAL(valueChanged(int)), horizontalSlider, SLOT(setValue(int)));
    …
    } // setupUi

(5)编译运行,如图3-4所示。用鼠标分别改变整数旋转框SpinBox和滑动条horizontalSliderr,会发现两者建立了联动的关系,同时,整数旋转框SpinBox建立了和主窗口的关联,在状态条显示数值。

图3-4 信号和槽的演示