因为工作琐事,进度好慢。。。
来看看书中的例子吧
代码如下:
#include <QApplication> #include <QHBoxLayout> #include <QSlider> #include <QSpinBox> int main(int argc, char *argv[]) { QApplication app(argc, argv); //创建QApplication对象app管理应用程序 QWidget *window = new QWidget; //创建一个部件 window->setWindowTitle("Enter Your Age"); //设置部件标题 QSpinBox *spinBox = new QSpinBox; //创建SpinBox QSlider *slider = new QSlider(Qt::Horizontal); //创建一个水平方向的 QSlider spinBox->setRange(0, 130); //设置spinBox的值范围 slider->setRange(0, 130); //设置slider的值范围 QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); //spinBox的值发生变化时,slider值也跟着变化 QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); //slider的值发生变化时,spinBox值也跟着变化 spinBox->setValue(35); //设定spinBox的初始值 QHBoxLayout *layout = new QHBoxLayout; //创建一个水平布局 layout->addWidget(spinBox); // layout->addWidget(slider); //在布局中添加各个部件 window->setLayout(layout); //设定部件window的布局管理为layout window->show(); //显示窗体 return app.exec(); //进入程序主循环。。 }
运行如图:
从上面例子中可以看书QT程序中界面上的任何一个组件,如窗体,SpinBox,Slider等等都是一个部件(widget)。
各个部件间可以用消息和槽联系到一起。
QT中的界面的布局管理是通过布局类来进行管理的。主要有3个重要的布局管理类:
- QHBoxLayout 水平方向排列部件,从左到有。
- QVBoxLayout 垂直方向排列部件,从上到下。
- QGridLayout 把各个部件排列在一个网格中。
额。。。貌似这才完成了第一章的学习。
总结一下。。 目前用到的所有类间的关系,如图:
QT的基础建立在信号与槽的机制上,为了实现信号与槽的机制,QT对C++通过宏的方式进行了扩展,如Q_OBJECT等等,这些宏在编译的时候通过qmake,moc等工具自动的进行解析为C++代码。