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


相关推荐

  • Cassandra SizeTieredCompaction策略解析

    Cassandra SizeTieredCompaction策略解析

    2021年8月18日
    60
  • c++ string头文件详解[通俗易懂]

    标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。…

    2022年4月12日
    394
  • flow control通常的方法

    flow control通常的方法半双工模式下:通过backpressure背压有2种方式,一是当交换机侦听到一个输入帧,就立刻发送一个空的帧

    2022年6月5日
    32
  • 解决Python扩展: Unable to find vcvarsall.bat[通俗易懂]

    解决Python扩展: Unable to find vcvarsall.bat[通俗易懂]安装mingw,以我的安装为例:我的mingw安装在C:\MinGW,python安装在C:\Python26然后将以下目录加入系统环境变量C:\MinGW\bin;C:\MinGW\msys\1.0;C:\MinGW\mingw32;C:\MinGW\mingw32\bin;C:\MinGW\msys\1.0\bin然后在目录C:\Python26\Lib\di…

    2022年5月29日
    45
  • wed后端和java的区别_web前端和web后端的区别详细分析

    wed后端和java的区别_web前端和web后端的区别详细分析原标题:web前端和web后端的区别详细分析在刚开始从事web开发时,首先要选准学习方向,看是想从事前端部分还是后端程序部分。当然在工作的后期,就不会分的那么细致了。做前端到后期也会懂一些后端的技术,反之,后端也是。本文创客学院讲师解析一下web前端和后端的区别有哪些?web前端和web后端的区别详细分析:Web前端:1.精通HTML,能够书写语义合理,结构清晰,易维护的HTML结构。2.精…

    2022年6月21日
    22
  • 使用mshta.exe绕过应用程序白名单

    使用mshta.exe绕过应用程序白名单今天,我们将学习有关HTA攻击的不同方法。HTA是有用且重要的攻击,因为它可以绕过应用程序白名单。在上一篇文章中,我们讨论了“WindowsApplocker策略-入门指南”,因为它们定义了应用

    2022年7月1日
    22

发表回复

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

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