zoukankan      html  css  js  c++  java
  • qt5---QMainWindow

    QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)【就是浮动窗口】、一个状态栏(status bar)及一个中心部件(central widget)

    #include "win.h"
    #include <QMenuBar>
    #include <QToolBar>
    #include <QLabel>
    #include <QStatusBar>
    #include <QDockWidget>
    #include <QTextEdit>
    
    Win::Win(QWidget *parent)
        : QMainWindow(parent)
    {
        this->resize(500,400);
        //******************菜单栏操作**************************
        QMenuBar* bar=menuBar(); //返回菜单栏指针
        this->setMenuBar(bar);//给窗口设置菜单栏--把菜单栏放入窗口
        //需要  #include <QMenuBar>
        QMenu* fileMenu=bar->addMenu("文件");//给菜单栏添加菜单
        //返回菜单的指针
        QMenu* editMenu=bar->addMenu("编辑");
        QAction* newAction=fileMenu->addAction("新建"); //给菜单添加一个菜单项目--添加一个行为
        //返回行为指针
        fileMenu->addSeparator();  //给菜单添加分割线
        QAction* openAction=fileMenu->addAction("打开");
        newAction->setIcon(QIcon("D:\ss\大象.png"));  //给行为增加图标--文件中
        openAction->setIcon(QIcon(":/tupin/img/对勾.png"));//给行为增加图标--资源文件中
        //使用资源文件格式:":+前缀名+文件名"
    
    
        //******************工具栏操作*************************
        QToolBar* toolbar=new QToolBar(this);  //创建一个工具栏
        //需要  #include <QToolBar>
        addToolBar(Qt::LeftToolBarArea,toolbar);//给窗口添加工具栏--把工具栏放到窗口
        //主窗口的工具栏上可以有多个工具条
        //工具条是一个可移动的窗口
        //参数2  要添加的工具栏
        //参数1[可选] 初始停靠区域,包括:
        //Qt::LeftToolBarArea 停靠在左侧        Qt::RightToolBarArea 停靠在右侧
        //Qt::TopToolBarArea 停靠在顶部--默认         Qt::BottomToolBarArea    停靠在底部
        //Qt::AllToolBarAreas   以上四个位置都可停靠
        toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//只能左右停靠
        toolbar->setFloatable(false);//能否浮动
        toolbar->setMovable(false);//能否移动--能否拖拽
        toolbar->addAction(newAction); //给工具栏添加行为
        //Qt 并没有专门的菜单项类,只是使用一个QAction类,抽象出公共的动作。当我们把QAction对象添加到菜单,就显示成一个菜单项,添加到工具栏,就显示成一个工具按钮。用户可以通过点击菜单项、点击工具栏按钮、点击快捷键来激活这个动作
        toolbar->addSeparator();//给工具栏添加分割线
        toolbar->addAction(openAction);
    
        //******************状态栏操作*******************
        QStatusBar* statusbar=statusBar(); //创建状态栏
        //返回状态栏指针
        setStatusBar(statusbar);//给窗口添加状态栏--把状态栏放到窗口
        //状态栏也只能最多有一个
        QLabel* label=new QLabel("提示信息",this);
        statusbar->addWidget(label,0);//给状态栏左侧添加控件--左侧
        //需要  #include <QStatusBar>
        //方法二 QLabel* label=new QLabel("提示信息",statusbar)---父控件是状态栏
        QLabel* label1=new QLabel("提示信息1",this);
        statusbar->addPermanentWidget(label1);//给状态栏右侧添加控件
    
        //*****************中心部件*******************
        QTextEdit* edit=new QTextEdit;
        setCentralWidget(edit); //给窗口添加中心控件
    
        //*****************浮动窗口和停靠窗口******************
        QDockWidget* dock=new QDockWidget;//创建锚接窗口--浮动窗口--停靠窗口
        //需要 #include <QDockWidget>
        addDockWidget(Qt::BottomDockWidgetArea,dock); //把浮动窗口添加到窗口中
        //参数1 起始停靠位置
        //Qt::BottomDockWidgetArea   中心部件底部
        //Qt::LeftDockWidgetArea
        //Qt::RightDockWidgetArea
        //Qt::TopDockWidgetArea
        //Qt::AllDockWidgetAreas
        //Qt::NoDockWidgetArea
        dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);//只能上下停靠
    
    
    
    }
    
    Win::~Win()
    {
    
    }
    connect(newAction,&QAction::triggered,this,[=](){qDebug()<<"点击新建行为了";});//点击行为,运行槽函数

  • 相关阅读:
    外设驱动库开发笔记5:AD7705系列ADC驱动
    ROS+LEDE最强上网软路由
    Flume1.9.0的安装、部署、简单应用(含分布式、与Hadoop3.1.2、Hbase1.4.9的案例)
    通过 Sqoop1.4.7 将 Mysql5.7、Hive2.3.4、Hbase1.4.9 之间的数据导入导出
    Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
    Centos7 二进制安装 Kubernetes 1.13
    Centos7 使用 kubeadm 安装Kubernetes 1.13.3
    go get获取gitlab私有仓库的代码
    Nginx设置Https反向代理,指向Docker Gitlab11.3.9 Https服务
    Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11453287.html
Copyright © 2011-2022 走看看