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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Determining IP information for eth0… failed; no link present.  Check cable?

    Determining IP information for eth0… failed; no link present.  Check cable?问题1:docker pull nginx 拉取失败问题2:Determining IP information for eth0… failed; no link present. Check cable?问题3:“VMware Network Adapter VMnet8”没有有效的 IP 配置问题4:没有开启VMware NAT service和VMware DHCP …

    2022年6月13日
    34
  • CreateThread 函数[通俗易懂]

    CreateThread 函数[通俗易懂]改变了栈的大小,但是把CreateThread的第2参数改成0x100000或者更小的时候,程序还是会出现这样的问题,只有将栈的大小还原为默认值,且CreateThread的第2参数为0才能正确运行详细的请查看:http://topic.csdn.net/u/20090905/15/7bf41679-3ed9-40b5-ac71-5f11c088984c.html微软在Windows

    2022年7月11日
    25
  • CSS 鼠标样式「建议收藏」

    CSS 鼠标样式「建议收藏」巧合要用到鼠标样式效果,就顺便整理了下十五种CSS鼠标样式,小例子供大家使用啊。CSS鼠标样式语法如下:任意标签中插入style=”cursor:*” 例子:文本或其它页面元素 文本或其它页面元素 注意把*换成如下15个效果的一种:下面是对这15种效果的解释。移动鼠标到解释上面,看看你的鼠标起了什么变化吧!hand是手型   例子:CSS鼠标手型效果 CSS

    2022年5月6日
    38
  • Percona Data Recovery Tool 单表恢复

    Percona Data Recovery Tool 单表恢复Percona Data Recovery Tool 单表恢复

    2022年4月20日
    39
  • pytest的使用_java中方法的调用

    pytest的使用_java中方法的调用Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

    2022年7月29日
    9
  • 传统蓝牙HCI流控(HCI flow control)

    传统蓝牙HCI流控(HCI flow control)一.声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:蓝牙综合介绍,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等第四篇:传统蓝牙host介绍,主

    2022年6月6日
    93

发表回复

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

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