Qt学习笔记3

QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序(如文本编辑器、图片编辑器等)的基础。

菜单栏

菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口标题栏的下面。一个主窗口只能有一个菜单栏。

复制代码
//创建菜单栏
    QMenuBar* bar=menuBar();
    setMenuBar(bar);
    //创建菜单
    QMenu*f1=bar->addMenu("文件");
    QMenu*f2=bar->addMenu("编辑");
    QMenu*f3=bar->addMenu("构建");
    //创建菜单项
    QAction*m1=f1->addAction("新建");
    f1->addAction("打开");
复制代码

注意按上述方法创建的菜单栏会直接加入主窗口的对象树,如果不希望如此应该使用QMenuBar的构造方法,比如希望多个窗口共用一个菜单栏就不能使用上述方法

工具栏

工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常由一些经常使用的命令(动作)组成。工具栏位于菜单栏的下面、状态栏的上面,可以停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个工具栏。

复制代码
    //创建工具栏
    QToolBar* tbar=new  QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,tbar);
    //只允许左右停靠
    tbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
    //设置浮动
    tbar->addAction(m1);
    //工具栏中可以添加其他的控件
     QPushButton* btn=new QPushButton("打开",this);
     tbar->addWidget(btn);
复制代码

状态栏

状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口只能有一个状态栏。

锚接部件

锚接部件作为一个容器使用,以包容其他窗口部件来实现某些功能。例如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它位于工具栏区的内部,可以作为一个窗口自由地浮动在主窗口上面,也可以像工具栏一样停靠在主窗口的上、下、左、右四个方向上。一个主窗口可以包含多个锚接部件。

复制代码
   //铆接部件(浮动窗口)
     QDockWidget* dockWidget=new QDockWidget("工作台",this);
     addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
     // 设置中心部件
     QTextEdit* qte=new QTextEdit("this");
     setCentralWidget(qte);
     //只允许上浮动
     dockWidget->setAllowedAreas(Qt::TopDockWidgetArea);
     //为浮动窗口添加部件
     QTextEdit *te1 =new QTextEdit();
     te1->setText(tr("Window1,The dock widget can be moved between docks by the user" ""));
     dockWidget->setWidget(te1);
复制代码

 

posted @   LuisLee  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示