qt学习第三课:窗口布局

来源:互联网 发布:你好旧时光 知乎 编辑:程序博客网 时间:2024/06/02 18:40

在qt中不用具体去设置窗口中控件的位置,这点是跟MFC很不同的,在QT中是通过布局来实现对窗口位置进行控制的。Qt中主要有三个布局管理器,如下:

QHBoxLayout: 在水平方向进行布局窗口控件,从左到右

QVBoxLayout:在竖直方向进行窗口布局,从上到下

QGridLayout:把各个窗口尽享网络布局。


下面就分别来进行介绍:


#include <QApplication>#include<QWidget>#include<QSlider>#include<QSpinBox>#include<QHBoxLayout>int main(int argc, char *argv[]){    QApplication a(argc, argv);  //  MainWindow w; //   w.show();//窗口布局学习    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 a.exec();}


在上面的代码中,首先创建了一个QWidget类型的窗口,用来作为程序的主窗口。

然后再窗口中创建了一个QSpinBox和一个QSlider对象,并为他们关联了信号和槽。

然后为spinbox设置了一个初始值。


最后引入了一个QHBoxLayout布局(横向布局),让两个控件并列显示在窗口中。

具体效果如下:


这个就是横向的布局效果。


下面来看下纵向的布局效果:




网格的设置是首先初始化一个网格布局对象,然后具体在一个a[n][m]的对象中布局就可以了,比如一个放在a[0][0],

然后把第二个放在a[0][1]的位置,他的效果就跟横向布局一样了。同理纵向布局也可以这样实现。



0 0
原创粉丝点击