Qt窗口组件

MainWindow工程

菜单栏:

  • 一个窗口中菜单栏只能有一个
  • 重置生成窗口大小:resize(长,宽)
  • 创建菜单栏:QMenuBar * bar = menuBar() (此时此菜单栏在主窗口外面)
  • 将菜单栏放入窗口内:setMenuBar(bar)
  • 创建菜单栏中的菜单:QMenu * fileMenu = bar->addMenu("文件")
  • 创建菜单具体项目:QAction * newAction = fileMenu->addAction("新建")
  • 多个项目之间添加分隔符:fileMenu->addSeparator()

工具栏:

  • 一个窗口中工具栏可以有多个
  • 创建工具栏:QToolBar * toolBar = new QToolBar(this)
  • 将工具栏放入窗口内:addToolBar(Qt::RightToolBarArea,toolBar)
  • 设置工具栏的停靠范围(可以上下左右):toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea)
  • 设置是否允许拖拽浮动:toolBar->setFloatable(false)
  • 设置是否移动(总开关,一旦设置,上面所有的操作都没意义):toolBar->setMovable(true)
  • 设置工具栏中的内容:toolBar->addAction("abc")
  • 设置和菜单栏中的项目共用:toolBar->addAction(newAction)
  • 工具栏中添加控件(按钮):QPushButton * btn = new QPushButton("CCCC",this);     toolBar->addWidget(btn);

状态栏:

  • 最多一个
  • 创建状态栏:QStatusBar * stBar = statusBar()
  • 设置到窗口中:setStatusBar(stBar)
  • 创建标签控件:QLabel * label = new QLabel("提示信息",this)
  • 放置标签到状态栏中,默认左侧:stBar->addWidget(label)
  • 放置到右侧:stBar->addPermanentWidget(label2)

中心部件:

  • 创建记事本:QTextEdit * edit = new QTextEdit(this)
  • 设置到中心位置:setCentralWidget(edit)

铆接部件(浮动窗口):

  • 可以创建多个
  • 创建浮动窗口:QDockWidget * dockWidget = new QDockWidget("浮动窗口",this)
  • 添加浮动窗口到主窗口:addDockWidget(Qt::BottomDockWidgetArea,dockWidget)
  • 设置停靠区域:dockWidget->setAllowedAreas(Qt::BottomDockWidgetArea)

mainwindow.cpp

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QPushButton>
#include<QStatusBar>
#include<QLabel>
#include<QDockWidget>
#include<QTextEdit>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口
    resize(600,400);
    //菜单栏的创建
    //菜单栏只能有一个
    QMenuBar *bar = menuBar();
    //将菜单栏放入到窗口中
    setMenuBar(bar);
    //创建菜单
    QMenu * fileMenu = bar->addMenu("文件");
    QMenu * editMenu = bar->addMenu("编辑");
    QMenu * constructMenu = bar->addMenu("构建");
    QMenu * debugMenu = bar->addMenu("调试");
    QMenu * analyzeMenu = bar->addMenu("分析");
    QMenu * toolMenu = bar->addMenu("工具");
    QMenu * controlMenu = bar->addMenu("控件");
    QMenu * helpMenu = bar->addMenu("帮助");
    //创建菜单项
    QAction * newAction = fileMenu->addAction("新建");
    //添加分割符
    fileMenu->addSeparator();
    QAction * saveAction = fileMenu->addAction("保存");
    editMenu->addAction("全选");


    //工具栏  可以有多个
    QToolBar * toolBar = new QToolBar(this);
    //将工具栏添加到主窗口
    addToolBar(Qt::RightToolBarArea,toolBar);
    //设置工具栏的停靠范围  只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    //设置浮动   不允许浮动
    toolBar->setFloatable(false);
    //设置是否移动(总开关) 一旦设置 上面所有的操作都没意义
    toolBar->setMovable(true);
    //工具栏中设置内容
    toolBar->addAction("abc");
    toolBar->addSeparator();
    //和菜单栏共用
    toolBar->addAction(newAction);
    //工具栏中添加控件
    QPushButton * btn = new QPushButton("CCCC",this);
    toolBar->addWidget(btn);

    //状态栏  最多一个
    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //添加标签控件
    QLabel * label = new QLabel("提示信息",this);
    QLabel * label2 = new QLabel("提示信息",this);
    //放置到状态栏标签控件,默认左侧
    stBar->addWidget(label);
    //放置到右侧
    stBar->addPermanentWidget(label2);

    //中心部件
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

    //铆接部件(浮动窗口),可以创建多个
    QDockWidget * dockWidget = new QDockWidget("浮动窗口",this);
    //添加到窗口
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    //设置停靠区域
    dockWidget->setAllowedAreas(Qt::BottomDockWidgetArea);
}

MainWindow::~MainWindow()
{

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中,可以使用布局(Layout)来实现组件窗口大小变化的效果。布局是一种自动调整组件位置和大小的机制,可以使组件随着窗口大小的变化自动调整。 Qt提供了多种布局方式,常用的有水平布局(QHBoxLayout),垂直布局(QVBoxLayout)和网格布局(QGridLayout)。 以垂直布局为例,以下是实现组件窗口大小变化的示例代码: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget *widget = new QWidget; QVBoxLayout *layout = new QVBoxLayout(widget); // 创建垂直布局,并设置为widget的布局 QLabel *label1 = new QLabel("Label 1"); QLabel *label2 = new QLabel("Label 2"); QLabel *label3 = new QLabel("Label 3"); layout->addWidget(label1); // 将label1添加到布局中 layout->addWidget(label2); // 将label2添加到布局中 layout->addWidget(label3); // 将label3添加到布局中 widget->setLayout(layout); // 设置widget的布局 widget->show(); return app.exec(); } ``` 在上述示例代码中,创建了一个QWidget对象和一个垂直布局对象,并将垂直布局设置为QWidget对象的布局。然后创建了三个QLabel对象,并将它们添加到垂直布局中。最后将QWidget对象的布局设置为垂直布局。 这样,当QWidget对象的大小发生变化时,垂直布局会自动调整QLabel对象的位置和大小,从而实现了组件窗口大小变化的效果。 如果要实现更复杂的布局,可以使用多个布局嵌套的方式来实现。比如可以将多个水平布局或垂直布局嵌套到一个网格布局中,来实现更灵活的布局方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值