• 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

  • 相关阅读:
    amr文件苹果手机怎么打开?四个方法教会你!
    DAST 黑盒漏洞扫描器 第三篇:无害化
    前端 JS 安全对抗原理与实践
    nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头
    沃趣科技与「DaoCloud 道客」达成生态合作,共同助推数字化新发展
    SpringBoot配置文件
    面对集群、限流、缓存 你会怎么做?
    Mybatis基础支持层-反射模块:ObjectFactory/Property工具类
    IDEA 22.2.3 创建web项目及Tomcat部署与服务器初始界面修改(保姆版)
    【毕业设计】深度学习 python opencv 实现人脸年龄性别识别
  • 原文地址:https://blog.csdn.net/weixin_57726902/article/details/126338638