目录
QMainWindow
- QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
【创建QMainWindow工程】
菜单栏
- 一个主窗口最多只有一个菜单栏。
- 位于主窗口顶部、主窗口标题栏下面。
- 创建菜单栏,通过QMainWindow类的menubar()函数获取主窗口菜单栏指针。
- 在mainwindows.cpp的构造函数中
//创建菜单栏 QMenuBar *bar = menuBar(); setMenuBar(bar);
创建菜单
- 添加头文件 QMenuBar
- 调用QMenu的成员函数addMenu来添加菜单
QAction* addMenu(QMenu * menu) QMenu* addMenu(const QString & title) QMenu* addMenu(const QIcon & icon, const QString & title)
//创建菜单栏 QMenu *fileMenu = bar->addMenu("文件"); QMenu *editMenu = bar->addMenu("编辑"); QMenu *toolMenu = bar->addMenu("工具");
创建菜单项
- 调用QMenu的成员函数addAction来添加菜单项
QAction* activeAction() const QAction* addAction(const QString & text) QAction* addAction(const QIcon & icon, const QString & text) QAction* addAction(const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0) QAction* addAction(const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0)
//创建菜单项 QAction *newAction = fileMenu->addAction("新建"); QAction *openAction = fileMenu->addAction("打开"); QAction *saveAction = fileMenu->addAction("保存");
添加分割线
//创建菜单项 QAction *newAction = fileMenu->addAction("新建"); fileMenu->addSeparator(); QAction *openAction = fileMenu->addAction("打开"); fileMenu->addSeparator(); QAction *saveAction = fileMenu->addAction("保存");
工具栏
- 添加头文件 QToolBar
- 主窗口的工具栏上可以有多个工具条,通常采用一个菜单对应一个工具条的的方式,也可根据需要进行工具条的划分。
- 直接调用QMainWindow类的addToolBar() 函数获取主窗口的工具条对象,每增加一个工具条都需要调用一次该函数。
- 插入属于工具条的动作,即在工具条上添加操作。
- 通过QToolBar类的addAction函数添加。
- 工具条是一个可移动的窗口,它的停靠区域由QToolBar的allowAreas决定,包括:
Qt::LeftToolBarArea 停靠在左侧 Qt::RightToolBarArea 停靠在右侧 Qt::TopToolBarArea 停靠在顶部 Qt::BottomToolBarArea 停靠在底部 Qt::AllToolBarAreas 以上四个位置都可停靠
- 使用 setAllowedAreas() 函数指定停靠区域:
setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea)
- 使用 setMoveable() 函数设定工具栏的可移动性:
setMoveable(false) //工具条不可移动, 只能停靠在初始化的位置上
- 示例:
//工具栏 QToolBar * toolBar = new QToolBar(this); addToolBar(Qt::LeftToolBarArea, toolBar); //设置只允许左右停靠 toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); //设置浮动 toolBar->setFloatable(false); //设置移动(总开关) toolBar->setMovable(false);
【工具栏中放入小部件】
//工具栏中添加小部件 toolBar->addAction(newAction); //添加分割线 toolBar->addSeparator(); toolBar->addAction(openAction); toolBar->addAction(saveAction);
状态栏
- 头文件 QStatusBar
- 派生自QWidget类,使用方法与QWidget类似,QStatusBar类常用成员函数。
- 状态栏也只能最多有一个
//添加小部件 void addWidget(QWidget * widget, int stretch = 0) //插入小部件 int insertWidget(int index, QWidget * widget, int stretch = 0) //删除小部件 void removeWidget(QWidget * widget)
- 示例:
//状态栏 一般只能有一个 QStatusBar *stBar = statusBar(); setStatusBar(stBar); QLabel *lab1 = new QLabel("左侧提示信息",this); stBar->addWidget(lab1); QLabel *lab2 = new QLabel("右侧提示信息",this); stBar->addPermanentWidget(lab2);
铆接部件
- 添加头文件 QDockWidget。
- 铆接部件 QDockWidget,也称浮动窗口,可以有多个。
QDockWidget * dock = new QDockWidget("标题",this); addDockWidget(Qt::LeftDockWidgetArea, dock); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea); 设置区域范围
- 示例:
//创建铆接部件 QDockWidget *dockwidget = new QDockWidget("Asinmy",this); addDockWidget(Qt::LeftDockWidgetArea, dockwidget); //设置只允许左右停靠 dockwidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
核心部件(中心部件)
- 除了以上几个部件,中心显示的部件都可以作为核心部件,例如一个记事本文件,可以利用QTextEdit做核心部件
- 添加头文件 ,QTextEdit 。
//核心部件,只能有一个 QTextEdit* edit = new QTextEdit(this); setCentralWidget(edit);
资源文件
- 创建带UI的项目
- 先输入英文,然后在属性text中改成中文
- 右击,添加工具栏
添加图标资源详细步骤
- 找到要条件图标的控件的名称:
- 在ui下面进行操作:
- 第1步:将图片资源放到项目文件夹中
- 第2步:右击项目,添加新文件--》Qt --》 Qt Resource File
- 第3步:如果切出res.qrc文件,右击 Open in Editor
- 第4步:添加前缀,这里添加 / ,然后添加文件,选择要加入的图片即可
- 第5步:构建项目(Ctrl + b),将图片添加到项目中
- 第6步:使用图片资源,语法:": + 前缀名 + 文件名称"
//给新建添加图标 ui->actionNew->setIcon(QIcon(":/Image/Luffy.png")); ui->actionOpen->setIcon(QIcon(":/Image/Sunny.jpg")); ui->actionSave->setIcon(QIcon(":/Image/butterfly.png"));