美文网首页Qt 使用笔记
Qt 布局常用功能记录

Qt 布局常用功能记录

作者: paresly | 来源:发表于2019-03-09 21:10 被阅读0次

    介绍

    在Qt界面设计中,布局(Layout)算是用的比较多的一个类了。布局主要用于管理界面的各个控件元素,保证界面在缩放时,各个控件的相对位置保持不变,这里记录一些与布局有关的一些操作。

    常用的布局类型
    • 水平布局 QHBoxLayout
    • 垂直布局 QVBoxLayout
    • 网格布局 QGridLayout
    • 栈布局 QStackedLayout

    根据名称可以知道这些布局的基本作用,按照哪些排列顺序进行布局显示,基本的用法很简单,比如可以这样:

    //初始化时,如果不指定parent,就需要调用 setLayout 来设置布局的界面了。
    QHBoxLayout* layout = new QHBoxLayout(); 
    layout->addWidget(widget);
    ...
    this->setLayout(layout); //指定是哪一个界面的布局
    
    常用的操作方法

    使用这些布局的时候,可以在QDesigner里面使用,直接鼠标拖动就可以,不再多说,在写代码控制界面控件的时候,就需要对各个控件的排列方式有一个大致的了解,比如说在 QHoxLayout 中的每一个控件都是垂直居中的,如果想让控件排列在上或者在下,就需要调用 addStreach(),创建一个占位符,也就是界面中的弹框。垂直布局也是这样。如果对于占位符有特殊的要求,比如说只能空出20像素,那么可以使用 addSpace(20) 去创建一个20占位符的空间。

    在网格布局中,经常遇到一个网格需要占用多行多列,在调用AddWidget 和 AddLayout 的时候,可以在参数 rowSpan 和 columnSpan中指定这项控件占用多少行或列。

    
    void 
    addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
    void 
    addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
    void 
    addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
    void 
    addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
    
    

    栈布局 QStackedLayout 这个是我自己这样叫的,这个类可以管理多个布局(界面),每次只显示一个界面,这一点与QStackedWidget 差不多。但值得注意的是,这个类提供了一个StackingMode属性,如果是QStackedLayout::StackAll类型,可以同时显示多个界面,当前界面(currentIndex)
    显示在最上面。这种显示方式,可以用来处理界面控件 显示与隐藏时候的界面跳动,比如说动态显示一个进度条,进度条出现的时候,就会导致之前的界面跳动一下位置。这时如果采用QStackedWidget,在不需要显示的时候隐藏,就可以避免这种控件跳动的出现。

    先写这么多吧,感觉目前对于MarkDown的用法还是不熟啊,端首的缩进没打出来。

    相关文章

      网友评论

        本文标题:Qt 布局常用功能记录

        本文链接:https://www.haomeiwen.com/subject/cziepqtx.html