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 的那点小把戏了。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • cad注释比例和打印比例不一样_CAD中的打印比例,绘图比例和注释全局比例详解…

    cad注释比例和打印比例不一样_CAD中的打印比例,绘图比例和注释全局比例详解…如上图同一条线段,在不同的标准格式如下(线宽设置相同,字高度都是3.5):第一个尺寸是测量因子为1,标注全局因子为2;第二个尺寸测量因子为2,标注全局因子为2;第三个尺寸测量因子为1,标注全局因子为1可见:1、测量因子影响的是标准尺寸的大小,2、标注全局因子影响的是字体和箭头的大小,3、他们的变化对线宽是没有影响的。关于他们对字体的大小的影响:打印比例和标注全局因子对打印出来的蓝图的字体会有影响。…

  • 拆解滴滴大脑 叶杰平谈出行领域算法技术

    拆解滴滴大脑 叶杰平谈出行领域算法技术近日,滴滴研究院副院长叶杰平在上海一场内部分享会上详细解读了滴滴大脑,这是外部首次窥探到较为完整的滴滴算法世界,并且一直潜水的产品“九霄”也首次露出真容。滴滴出行研究院副院长叶杰平滴滴大脑由三部分组成叶杰平将滴滴大脑这个智能系统分为三部分,分别是大数据、机器学习和云计算。其中大数据就像工业革命时代的煤一样举足轻重,人工智能需要数据进行训练,纵观应用级深度学习的成功案例,他们都获得了海量数据,…

  • jdk9新特性

    jdk9新特性jdk目录结构变化JDK=JRE+开发工具集(javac编译工具等)JRE=JVM+JavaSE标准类库jdk8的目录结构:jdk9目录结构:模块化先创建两个modul

  • 如何构建NTP时间服务器「建议收藏」

    NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间。互联网的时间服务器也有很多,例如ntpdatentp.fudan.edu.cn复旦大学的NTP免费提供互联网时间同步。NTP服务器监听端口为UDP的123,那就需要在本地防火墙开启运行客户端访问123端口,vi/etc/sysconfig/iptables添加如下规则:-AINPUT-mstate–stateNEW-mudp-pudp

  • Java的finalize方法干什么_Java finalize

    Java的finalize方法干什么_Java finalize我们通常用构造器来创建对象,而Finalize正好相反,构造方法执行对象的初始化操作,finalize方法执行对象的销毁操作.那我们什么时候需要使用finalize方法呢,我们都知道Java里垃圾回收器可以回收对象使用的内存空间,但是对象可能会持有很多资源比如Socket、文件句柄等,垃圾收集器无法回收这些资源,因此你需要使用finalize方法帮助GC回收这些资源,比如关闭打开的文件或者网元资源,删除临时文件等.一个例子Object类是所有类的父类,如果你去查看java.lang.Object类

  • django示例_介绍信模板

    django示例_介绍信模板前言目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是DjangoTemplateLanguage三个单词的缩写,也就是Django自带的模板语言。当然也可以配置

发表回复

您的电子邮箱地址不会被公开。

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