C++ GUI Qt4 编程(第二版)第1章 入门 窗口部件的布局

    技术2026-02-01  4

    上一节讲述了qt的安装和新建一个项目,接下来写一个小例子

    代码

    代码如下:粘贴到main.cpp中即可运行

    #include <QApplication> #include <QHBoxLayout> #include <QSlider> #include <QSpinBox> int main(int argc, char *argv[]) { QApplication app(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 app.exec(); }

    顶层窗口

            QWidget窗口部件是QSpinBox和QSlider的父对象,因此程序是把它当作顶层窗口的。QWidget的构造函数以及它的所有子类都会带一个参数QWidget *,以用来说明谁是它们的父窗口部件.

    代码分析

        

          QspinBox中setvalue的说明

    setValue() will emit valueChanged() if the new value is different from the old one. The value property has a second notifier signal which includes the spin box's prefix and suffix.

         即:如果setvalue的值和现在的值相同,将不会发射valueChanged信号。因此图1.5的过程4中spinbox setValue发现值相同,从而结束了循环。

      QSlider中的setvalue继承于祖先QAbstractSlider,其中setvalue的实现为:

     

    同样也是值相同即返回。

    参考文档的使用

    参考文档的使用

    Processed: 0.014, SQL: 9