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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!