服务 好的网站制作,电商网站建设目的,网站开发推荐,东营免费网站制作第六章 Qt布局管理器Layout 大家有没有发现一个现象#xff0c;我们放置一个组件#xff0c;给组件最原始的定位是给出这个控件的坐标和宽高值#xff0c;这样Qt就知道这个组件的位置。当用户改变窗口的大小#xff0c;组件还静静地呆在原来的位置#xff0c;这有时候显然…第六章 Qt布局管理器Layout 大家有没有发现一个现象我们放置一个组件给组件最原始的定位是给出这个控件的坐标和宽高值这样Qt就知道这个组件的位置。当用户改变窗口的大小组件还静静地呆在原来的位置这有时候显然不是很科。所以Qt提供一种机制-布局解决了这个问题。只要把组件放入某一种布局之中当需要调整大小或位置的时候Qt就知道该怎样进行调整。 下面举一个简单例子 1 #include QApplication2 #include QWidget3 #include QSpinBox4 #include QSlider5 #include QHBoxLayout6 7 int main(int argc, char *argv[])8 {9 QApplication a(argc, argv);
10 QWidget w new QWidget;
11 w.setWindowTitle(Enter your age);
12
13 QSpinBox *spinBox new QSpinBox;
14 QSlider *slider new QSlider(Qt::Horizontal);
15 spinBox-setRange(0, 130);
16 slider-setRange(0, 130);
17
18 QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
19 QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
20
21 spinBox-setValue(35);
22
23 QHBoxLayout *layout new QHBoxLayout;
24 layout-addWidget(spinBox);
25 layout-addWidget(slider);
26 w.setLayout(layout);
27
28 w.show();
29
30 return a.exec();
31 } 编译运行结果直接改变窗体大小看组件的变化 Qt一共有5种主要的layout分别是 水平布局 垂直布局 使用分裂器水平布局 使用分裂器垂直布局 栅格布局 下面使用Qt Creator的designer对垂直布局进行举例其他布局的使用方法类似。 1.在左边的器件栏里拖入三个PushButton和一个Vertical Layout垂直布局管理器到中心面板。如下图。 2.将这三个按钮放入垂直布局管理器效果如下。可以看到按钮垂直方向排列并且宽度可以改变但高度没有改变。 3.我们将布局管理器整体选中按下上面工具栏的Break Layout按钮便可取消布局管理器。我们当然也可以先将按钮移出再按下Delete键将布局管理器删除。 4.下面我们改用分裂器部件QSplitter。 先将三个按钮同时选中再按下上面工具栏的Lay Out Vertically in Splitter垂直分裂器。 效果如下图。可以看到按钮的大小可以随之改动。这也就是分裂器和布局管理器的分别。 5.其实布局管理器不但能控制器件的布局还有个很重要的用途是它能使器件的大小随着窗口大小的改变而改变。 我们先在主窗口的中心拖入一个文本编辑器Text Edit。 这时直接运行程序效果如下。可以看到它的大小和位置不会随着窗口改变。 下面我们选中主窗口部件然后在空白处点击鼠标右键选择Layout-Lay Out in a Grid使整个主窗口的中心区处于网格布局管理器中。 可以看到这时文本编辑器已经占据了整个主窗口的中心区。 运行一下程序可以看到无论怎样拉伸窗口文本编辑框的大小都会随之改变。 转载于:https://www.cnblogs.com/heguoyuan/p/4279294.html