精华内容
下载资源
问答
  • Qt布局

    2020-09-27 19:36:25
    目的 首先这篇博客不是用来介绍Qt如何布局的,网上太多,可以自己去了解Qt有哪些布局,每个布局管理器特色等等。我这里主要是说明Qt布局中一些相关事项以及自己的领会。

    目的

    首先这篇博客不是用来介绍Qt如何布局的,网上太多,可以自己去了解Qt有哪些布局,每个布局管理器特色等等。我这里主要是说明Qt布局中一些相关事项以及自己的领会, 以及如何拆分布局与组合布局

    布局

    我们知道Qt 有盒子布局(水平, 垂直), 表单布局, 网格布局, 栈布局这四种常用布局.
    在这里插入图片描述
    想必使用Qt的各位 大佬, 都知道布局怎么使用. 它就好比把你使用控件(自定义的也是)放入到一个box content里面, 适当设置布局管理器中margin, padding, border等等属性. ,可以组合设置很多各种各样的界面布局情况. 我们可以理解是如何在盒子里放置控件, 怎么放, 怎么设置 ,需要依据软件实际功能需求设置,

    如下是两种分析的界面布局, 方便我们这种小白更好的拆分与组合布局.

    1. Qt 开发环境界面
      在这里插入图片描述
      在这里插入图片描述

    2. 内网通聊天界面
      在这里插入图片描述

    展开全文
  • qt布局

    2021-01-07 23:44:33
    qt布局 分割窗口 (1)新建Qt Widgets Application(详见1.3.1节),项目名称为“Splitter”,基类选择“QMainWindow”,取消“创建界面”复选框的选中状态。 (2)在上述工程的“main.cpp”文件中添加如下代码。 ...

    qt布局

    分割窗口

    在这里插入图片描述

    (1)新建Qt Widgets Application(详见1.3.1节),项目名称为“Splitter”,基类选择“QMainWindow”,取消“创建界面”复选框的选中状态。
    (2)在上述工程的“main.cpp”文件中添加如下代码。
    其中,
    (a) QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0):新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口。
    (b) QTextEdit *textLeft =new QTextEdit(QObject::tr("Left Widget"),splitterMain):新建一个QTextEdit类对象,并将其插入主分割窗口中。
    (c) textLeft->setAlignment(Qt::AlignCenter):设定TextEdit中文字的对齐方式,常用的对齐方式有以下几种。
    (d) QSplitter *splitterRight =new QSplitter(Qt::Vertical,splitterMain):新建一个QSplitter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口。
    (e) splitterRight->setOpaqueResize(false):调用setOpaqueResize(bool)方法用于设定分割窗口的分割条在拖曳时是否为实时更新显示,若设为true则实时更新显示,若设为false则在拖曳时只显示一条灰色的粗线条,在拖曳到位并释放鼠标后再显示分割条。
    (f) splitterMain->setStretchFactor(1,1):调用setStretchFactor()方法用于设定可伸缩控件,它的第1个参数用于指定设置的控件序号,控件序号按插入的先后次序从0起依次编号;第2个参数为大于0的值,表示此控件为可伸缩控件。
    
    

    QDockWidget停靠窗口

    在这里插入图片描述

    (a) setFeatures()方法设置停靠窗体的特性,原型如下:
    void setFeatures(DockWidgetFeatures features)
    参数QDockWidget::DockWidgetFeatures指定停靠窗体的特性,包括以下几种参数。
    ① QDockWidget::DockWidgetClosable:停靠窗体可关闭。
    ② QDockWidget::DockWidgetMovable:停靠窗体可移动。 
    ③ QDockWidget::DockWidgetFloatable:停靠窗体可浮动。
    ④ QDockWidget::AllDockWidgetFeatures:此参数表示拥有停靠窗体的所有特性。
    ⑤ QDockWidget::NoDockWidgetFeatures:不可移动、不可关闭、不可浮动。
    (b) setAllowedAreas()方法设置停靠窗体可停靠的区域,原型如下:
    void setAllowedAreas(Qt::DockWidgetAreas  areas)
    参数Qt::DockWidgetAreas指定了停靠窗体可停靠的区域,包括以下几种参数。
    ① Qt::LeftDockWidgetArea:可在主窗口的左侧停靠。
    ② Qt::RightDockWidgetArea:可在主窗口的右侧停靠。
    ③ Qt::TopDockWidgetArea:可在主窗口的顶端停靠。
    ④ Qt::BottomDockWidgetArea:可在主窗口的底部停靠。
    ⑤ Qt::AllDockWidgetArea:可在主窗口任意(以上四个)部位停靠。
    ⑥ Qt::NoDockWidgetArea:只可停靠在插入处。
    
    
    

    堆栈窗体QStackedWidget类(点击切换窗口)

    在这里插入图片描述

    QLayout

    在这里插入图片描述

    Horizontal 水平

    vertical 垂直

    layout,代码 E:\qt\workspace\space3\layout

    main

    #include "widget.h"
    
    #include <QApplication>
    #include <QSplitter>
    #include <QTextEdit>
    #include <QListWidget>
    #include <QStackedWidget>
    #include <QLabel>
    #include <QHBoxLayout>
    #include "userinfo.h"
    #include "content.h"
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QFont font("ZYSong18030",12);
        a.setFont(font);
    
        QSplitter* splitter = new QSplitter(Qt::Horizontal,0);
        splitter->setOpaqueResize(true);
    
        QListWidget* list = new QListWidget(splitter);
        list->insertItem(0,QObject::tr("基本信息"));
        list->insertItem(1,QObject::tr("联系方式"));
        list->insertItem(2,QObject::tr("详细资料"));
        list->insertItem(3,QObject::tr("基本信息设计师"));
    
        Content* content = new Content(splitter);
    
        QObject::connect(list,SIGNAL(currentRowChanged(int)),content->getStack(),SLOT(setCurrentIndex(int)));//(b)
    
    
        //设置主布局框即水平分割窗的标题
        splitter->setWindowTitle(QObject::tr("修改用户资料"));
        //设置主布局框即水平分割窗的最小尺寸
        splitter->setMinimumSize(splitter->minimumSize());
        //设置主布局框即水平分割窗的最大尺寸
        splitter->setMaximumSize(splitter->maximumSize());
        splitter->show();	//显示主布局框,其上面的控件一同显示
        //content->show();
    
    //    Widget w;
    //    w.show();
        return a.exec();
    }
    
    

    content

    #include "content.h"
    #include<QVBoxLayout>
    Content::Content(QWidget *parent): QFrame(parent)
    {
    
        stack = new QStackedWidget(this);
        stack->setFrameStyle(QFrame::Panel|QFrame::Raised);
    
        userInfo1 = new userInfo();
        contact = new Contact();
        detail = new Detail();
        baseInfo = new BaseInfo;
        stack->addWidget(baseInfo);
        stack->addWidget(contact);
        stack->addWidget(detail);
        stack->addWidget(userInfo1);
    
        /* 创建两个按钮 */					//(b)
    //    AmendBtn =new QPushButton(tr("修改"));
    //    CloseBtn =new QPushButton(tr("关闭"));
        QHBoxLayout *BtnLayout =new QHBoxLayout;
        BtnLayout->addStretch(1);
    //    BtnLayout->addWidget(AmendBtn);
    //    BtnLayout->addWidget(CloseBtn);
        /* 进行整体布局 */
        QVBoxLayout *RightLayout =new QVBoxLayout(this);
        RightLayout->setMargin(10);
        RightLayout->setSpacing(6);
        RightLayout->addWidget(stack);
        RightLayout->addLayout(BtnLayout);
    }
    
    Content::~Content()
    {
    
    }
    
    QStackedWidget *Content::getStack() const
    {
        return stack;
    }
    
    

    设计师也是很快的

    在这里插入图片描述

    仅此记录,qt5.12教程内容

    展开全文
  • Qt 布局

    2019-04-16 15:28:11
    参考:... qt布局有几种: 1.水平布局QHBoxLayout 2.垂直布局QVBoxLayout 3.网格布局QGridLayout 4.表格布局QFormLayout 5.分组布局QStackLayout (QStackedLayout类把子控件进行分组或者分页...

    参考:https://blog.csdn.net/hiwoshixiaoyu/article/details/70859879

    qt布局有几种:

    1.水平布局QHBoxLayout

    2.垂直布局QVBoxLayout

    3.网格布局QGridLayout

    4.表格布局QFormLayout

    5.分组布局QStackLayout (  QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件)。 

    这些方法可以嵌套使用。使用这些Qt布局管理类的另一个原因是,在程序、系统改变字体,语言或者在不同的平台上运行时,布局管理器能够自动调整窗体里所有控件的大小和尺寸。

     

    layout的属性设置的含义:

    1.layoutName:layout的名称

    2.layoutLeftMargin:布局中元素左侧边距

    3.layoutTopMargin:布局中元素上方边距

    4.layoutRightMargin:布局中元素右侧边距

    5.layoutBottomMargin:布局中元素下方边距

    6.layoutSpacing:布局中元素之间的距离

    7.layoutStetch:伸缩因子

      相对一个horizontalLayout中的两个QTextEdit控件按2:3的比例扩大

     

    具体方法:

     

         把horizontalLayout中的layoutstretch属性设置为2,3即可,layoutstretch属性的意思是horizontalLayout里面的两个控件按2:3的宽度显示。

     

    同理如果horizontalLayout里面放了三个控件,layoutstretch里面的初始值为0,0,0,意思是三个控件的比例是1:1:1。

     

          其他控件中的layoutstretch也是这个意思。

    8.layoutSizeConstraint:设置大小约束条件

     

    如果布局中需要保持控件的大小,则需要设置控件的minimumsize和maximumsize。

     

    布局管理的三种方式:

    1.绝对位置定位: label.setGeometry(10,10,20,20);

    2.手工布局: 给出控件的绝对位置,但是他们的尺寸根据窗口的大小确定,可以通过重写窗体控件的resizeEvent()实现对子控件的大小设置。

    3.布局管理器: 运用QHBoxLayout、QVBoxLayout、QGridLayout 、QFormLayout、QStackLayout布局。

    sizepolicy:

    1. Fixed: 大小不能改变

    2. Minimum: 已经是最小, 不能再被缩小, 但能放大.

    3. Maximum: 已经是最大, 不能再被放大, 但能缩小.

    4. Preferred:  控件的sizeHint()是他的sizeHint, 能被缩小, 放大.

    5. Expanding: 控件可以自行增大或者缩小.

    展开全文
  • QT 布局

    2010-12-21 14:49:00
  • qt 布局

    2016-06-27 20:52:00
    说到qt布局,比起之前用的MFC好了许多,而且qt支持qss,可以更好的美化界面。qt提供了几种常见的布局管理 窗体布局,这对客户端程序来说是一个福音,再也不用操心程序界面放大缩小时界面控件怎么变化,只需要把界面...
  • QT布局

    千次阅读 2015-11-01 10:14:58
    在一个Widget中,Qt布局管理系统提供了一个简单而有效的方式来自动组织子widget,以保证他们能够很好地利用可用空间。 介绍 Qt包含一个布局管理类的集合,它们被用来描述widgets如何在应用程序的用户界面中呈现的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,185
精华内容 2,474
关键字:

qt布局