• qt主窗体


    一、QT主窗体结构介绍 
    QMainWindow是一个为用户提供主窗口程序的类。
    包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状
    态栏(status bar)及一个中心部件(central widget),是许多应用程序(如文本编辑器、图片编辑器
    等)的基础。
    主窗口界面布局:
     
     
    二、菜单栏(QMenu) 
    菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作
    (Action)来表示这些命令。
    Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口
    标题栏的下面。
    一个主窗口只能有一个菜单栏。
    在MainWindow中创建菜单栏:
    void MainWindow::initMenu()
    {
        //获取主窗口的菜单栏(QMenuBar),然后添加一个菜单选项,返回指向该菜单的指针对象;
        QMenu *menu = this->menuBar()->addMenu("Menu1");
        //添加子选项(QAction)
        menu->addAction(tr("act1"));
        menu->addAction(tr("act2"));
        menu->addAction(tr("act3"));

     
    运行效果:
     
     
    三、状态栏(QStatusBar) 
    状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。
    用户可以在状态栏上添加、使用Qt窗口部件。
    一个主窗口只能有一个状态栏。
    在MainWindow中设置状态栏:
        //添加子菜单(QMenu)
        QMenu *subMenu = menu->addMenu("SubMenu");
        //子菜单添加选项
        subMenu->addAction(tr("act1"));
        subMenu->addAction(tr("act2"));
        subMenu->addAction(tr("act3"));
    }
    void MainWindow::initStatusBar()
    {
        //获取主窗口的状态栏
        QStatusBar *bar = this->statusBar();
        //设置状态栏的提示信息
        bar->setToolTip(tr("QStatusBar-ToolTip"));
        //设置状态栏的提示消息,若设置第二个参数,则在超时后提示消失。默认一直显示。
        bar->showMessage(tr("showMessage"),1000);
        //在状态栏添加一个文本标签,如果设置了showMessage,那么这个控件不会显示
        QLabel *label = new QLabel("QStatusBar");
        bar->addWidget(label);
        //在状态栏尾部添加一个行编辑器
        QLineEdit *edit = new QLineEdit;
        //设置行编辑器的预留提示信息
        edit->setPlaceholderText(tr("QStatusBar"));
        bar->addPermanentWidget(edit);
    }

     
    运行效果:
     
    四、工具栏(QToolBar) 
    工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。
    工具栏位于菜单栏的下面、状态栏的上面,可以停靠在主窗口的上、下、左、右四个方向上。
    一个主窗口可以包含多个工具栏。
    在MainWindow中创建工具栏:
     
    工具栏可以通过下面代码设置按钮的显示样式:
     
    枚举类型说明 
    枚举类型:Qt::ToolButtonStyle 
    void MainWindow::initToolBar()
    {
        //新增一个状态栏
        QToolBar *toolBar = this->addToolBar(tr("ToolBar"));
        //设置状态栏可以放置的区域
        toolBar->setAllowedAreas(Qt::BottomToolBarArea);
        //设置状态栏是否可以脱离主窗体进行显示
        toolBar->setFloatable(true);
        //设置状态栏是否可以被移动
        toolBar->setMovable(false);
        //新增一个现有的QAction对象
        toolBar->addAction(act1);
        //添加一个分隔符
        toolBar->addSeparator();
        //新增一个新的QAction对象
        toolBar->addAction(tr("new Action"));
    }
    void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)

    名称值说明
    Qt::ToolButtonIconOnly0只显示图标(默认)
    Qt::ToolButtonTextOnly1只显示文字
    Qt::ToolButtonTextBesideIcon2显示图标和文字,文字在图标的旁边
    Qt::ToolButtonTextUnderIcon3显示图标和文字,文字在图标的下边
    Qt::ToolButtonFollowStyle4参照主样式
    枚举值:
    运行效果:
     
    五、锚接部件(QDockWidget) 
    锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。
    例如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。
    它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可以像工具栏一样停靠在主窗
    口的上、下、左、右四个方向上。
    一个主窗口可以包含多个锚接部件。
    在MainWindow中创建锚接部件:
     
     
    运行效果:
    void MainWindow::initDockWidget()
    {
        //创建QDockWidget对象
        QDockWidget *dock = new QDockWidget();
        //创建一个QLabel对象
        QLabel *label = new QLabel(tr("QDockWidget"));
        //将QLabel对象作为QDockWidget的内部控件
        dock->setWidget(label);
        //将QDockWidget对象添加到主窗体的右侧
        this->addDockWidget(Qt::RightDockWidgetArea,dock);
    }

     
    六、中心部件 
    中心部件处在锚接部件区的内部、主窗口的中心。
    一个主窗口只能有一个中心部件。
    在MainWindow中设置中心区域:
     
    运行效果:
    void MainWindow::initCenterWidget()
    {
        //创建中心区域窗体,此处以QLabel为例
        QLabel *centerLabel = new QLabel(tr("Center Widget"));
        //设置文本居中显示
        centerLabel->setAlignment(Qt::AlignCenter);
        //设置主窗体的中心区域窗体
        setCentralWidget(centerLab

  • 相关阅读:
    常见面试题:http篇
    数组容器装水问题解法
    国产办公软件崛起,WPS发布新版本,金山系兄弟软件来助力
    C#中的using关键字
    练习nfs-rsyslog-httpd-mysql
    网络——路由器
    JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化?
    月份英文和简写
    el-upload 上传&表单校验成功后再触发上传
    日化用品行业集团采购管理系统改变传统采购模式,降低采购成本
  • 原文地址:https://blog.csdn.net/weixin_57726902/article/details/126338638