QVBoxLayout的使用

QVBoxLayout的使用#include<QApplication>#include<QPushButton>#include<QWidget>#include<QMenuBar>#include<QStatusBar>#include<QVBoxLayout>#include<QTextEdit>#include&amp

大家好,又见面了,我是你们的朋友全栈君。

#include <QApplication>
#include <QPushButton>
#include <QWidget>
#include <QMenuBar>
#include <QStatusBar>
#include <QVBoxLayout>
#include <QTextEdit>
#include <QLabel>

class HMainWindow:public QWidget
{
 
 
public:
    HMainWindow(QWidget * parent =0)
        :QWidget(parent, Qt::Window), m_menuBar(0), m_statusBar(0), m_central(0)
    {
 
 
        m_vbox = new QVBoxLayout(this);
        m_vbox->setContentsMargins(0,0,0,0);
        m_vbox->setSpacing(0);

        menuBar();
        statusBar();
        setCentralWidget(new QTextEdit);

        m_menuBar->addMenu("&File");
        m_menuBar->addMenu("&Help");

        m_statusBar->addWidget(new QLabel("Hello!!"));
        m_statusBar->addPermanentWidget(new QLabel("2018-6-9"));

      setLayout(m_vbox);


    }
    void setCentralWidget(QWidget * w)
    {
 
 
        if (!m_central) {
 
 
            m_central = w;
            m_vbox->insertWidget(0, w, 1);
        }
    }

    QMenuBar * menuBar()
    {
 
 
        if (!m_menuBar) {
 
 
            m_menuBar = new QMenuBar(this);
            m_vbox->setMenuBar(m_menuBar);
        }
        return m_menuBar;
    }

    QStatusBar * statusBar()
    {
 
 
        if (!m_statusBar) {
 
 
            m_statusBar = new QStatusBar(this);
            m_vbox->addWidget(m_statusBar);
        }
        return m_statusBar;
    }

private:
    QMenuBar * m_menuBar;
    QStatusBar * m_statusBar;
    QWidget * m_central;
    QVBoxLayout * m_vbox;
};



int main(int argc, char *argv[])
{
 
 
    QApplication a(argc, argv);

    HMainWindow w;
    w.show();

    return a.exec();
}

QVBoxLayout的使用

我们用这个来模拟一个QMainWindow,这个类很简单:

HMainWindow()

构造函数。创建了一个layout(用来放置菜单栏、状态栏、中心窗体);传递给基类QWidget一个Qt::Window标记,当然,对我们这个例子这个东西有没有无所谓。

menuBar()

第一次调用它时,会生成一个QMenuBar,并加入layout

statusBar()

同上,生成状态栏并加入layout

setCentralWidget()

除状态栏、菜单栏外的区域,总要放个东西吧?



和 QMainWindow比起来,我们这个HMainWindow实在是太简易了。因为QMainWindow所使用的QMainWindowLayout(对,有这么一个东西,是个私有类) 比 QVBoxLayout复杂太多了。

不过呢,思想是一样的。一旦理解了这个,也就掌握 QMainWindow 的那点小把戏了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149970.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学习方法——哈佛大学幸福课(积极心理学)学习笔记(上)

    学习方法——哈佛大学幸福课(积极心理学)学习笔记(上)最近刚看完哈佛大学的幸福课(又名积极心理学),真的是受益匪浅,通常心理学只研究如何消除抑郁、自卑等消极心理,但是消除了消极心理并不代表就会变得幸福,就像摆脱了痛苦并不代表获得了快乐。积极心理学的核心内容就是去分析积极心理的特点、研究如何培养他们。下面目录中加粗的章节是我认为的讲的最好的章节,从根源去分析悲观、焦虑以及完美主义等是如何产生的,然后分析它们与积极品性的关系,最后告诉我们培养积极品性…

    2022年7月25日
    15
  • 操作系统的概念 (OS学习笔记)

    操作系统的概念 (OS学习笔记)操作系统的概念定义计算机系统的层次结构操作系统(OperatingSystem,os)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。操作系统的概念和目标从以下三大方面进行阐述:…

    2022年7月14日
    17
  • 深入理解MySQL索引设计和优化原则[通俗易懂]

    深入理解MySQL索引设计和优化原则[通俗易懂]索引类型探讨索引设计和优化原则之前,先给大家熟悉一下索引类型:主键索引PRIMARYKEY:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。唯一索引UNIQUE:唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。创建命令:ALTERTABLEtable_nameADDUNIQUE(column);普通索引INDEX:最基本的索引,它没有任何限制。创建命令:ALTERTABLEtable_nameADDINDEXi..

    2022年6月24日
    25
  • 键盘过滤驱动程序

    键盘过滤驱动程序

    2021年12月31日
    52
  • SQL 对decimal类型转换为int类型

    SQL 对decimal类型转换为int类型CAST(SaleQtyASINT)-CAST(ISNULL(Qty,0)ASINT)CountQtyselectISNULL(CAST(E.QtyASINT),0)FROMOrderDetailE空值需要默认为0即可转载于:https://www.cnblogs.com/Warmsunshine/p/10868864.html…

    2022年7月20日
    21
  • OHEM的pytorch代码实现细节

    OHEM的pytorch代码实现细节详细解读一下OHEM的实现代码:defohem_loss(batch_size,cls_pred,cls_target,loc_pred,loc_target,smooth_l1_sigma=1.0):”””Arguments:batch_size(int):numberofsampledroisforbboxhe…

    2022年5月29日
    99

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号