一、在此主要使用代码来创建对应的控件
1、Qt 利用代码所创建的如:按钮、菜单栏、工具栏 等等控件,默认都是独立于主窗口的,需要将其加入到主窗口中去:即设置其父对象parent
为主窗口。
2、不在构造函数或Qt Designer中创建的控件,如通过代码来在自定义的函数中new出来的控件,且该函数未被构造函数调用,则new出来的控件不会显示出来。此时需要调用show()
函数才能让让该控件显示出来
2、在将创建的工具栏、菜单栏、浮动窗口、按钮、中心部件等控件加入到窗口中时,若该控件只能有一个,则其前缀为set
开头,一般为setXXXX
;若该控件可以有多个,则其前缀为add
,一般为addXXXX
。
二、创建一个文本编辑应用程序的QMainWindow
文件结构及代码内容如下:
1、01_QMainWindow.pro
文件
2、mainwindow.h
文件
3、main.cpp
文件
4、mainwindow.cpp
文件。所有的代码都添加到该文件下,其它的文件都保持默认。
#include "mainwindow.h"
#include<QMenuBar> // 创建菜单栏,首先要包含该菜单栏头文件
#include<QToolBar> // 包含对应头文件
#include<QPushButton>
#include<QStatusBar>
#include<QLabel>
#include<QTextEdit>
#include<QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(1600,1200);
/************************* 1、创建菜单栏 ******************/
//创建菜单栏:菜单栏最多只能有一个
//利用系统提供的方法,已经被写到对象树中,无需再释放。
QMenuBar *bar=menuBar();
setMenuBar(bar);//将创建的菜单栏加入到窗口中
//为创建的菜单栏添加对应的内容,该创建方式会有一个对应指针类型的返回值
QMenu *fileMenu = bar->addMenu("File");
QMenu *editMenu = bar->addMenu("Edit");
//创建菜单项的子内容,用到上面的返回指针
fileMenu->addAction("Create");
fileMenu->addSeparator();//两子项间添加分割线
fileMenu->addAction("Open");
/************************ 2、创建工具栏 ******************/
// 工具栏可以有多个,并可以拖拽,移动其位置
// 创建工具栏,并将其放到对象树中
QToolBar *toolBar=new QToolBar(this);
addToolBar(toolBar);// 将工具栏放入窗口中,默认在上面
//addToolBar(Qt::LeftToolBarArea,toolBar); 将其放在窗口左边。
// 设置工具栏不可以浮动
toolBar->setFloatable(false);
// 向工具栏中添加内容
toolBar->addAction("项目");
toolBar->addSeparator();
toolBar->addAction("复制");
//向工具栏中添加控件,如:按钮
QPushButton *btn01=new QPushButton("放大",this);//创建按钮
toolBar->addWidget(btn01);//将按钮控件添加到工具栏中
/************************* 3、创建状态栏 *****************/
//状态栏最多只能有一个
QStatusBar *stBar=statusBar();
setStatusBar(stBar); //将状态栏加入到窗口
//创建标签控件,并将其放入到状态栏中
QLabel *label01=new QLabel("提示信息",this,Qt::Widget);
stBar->addWidget(label01);//默认放在左边
QLabel *label02=new QLabel("错误信息",this,Qt::Widget);
stBar->addPermanentWidget(label02);//此时将标签放在右边
/******* 4、设置中心部件,即核心工作区域,只能有一个 ********/
QTextEdit *textEdit=new QTextEdit(this);//创建一个文本编辑控件作为中心部件
setCentralWidget(textEdit);//将文本编辑部分加入窗口
/******* 5、浮动窗口,也叫铆接部件,可以被单独拖拽出来,可以有多个 ********/
//创建一个浮动窗口,类似于工具栏,可以设置其位置
QDockWidget *dockWidget=new QDockWidget(this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//将其加入到主窗口,放在中心部件下面
//浮动窗口默认可以向任意方向拖拽,可以设置其只能拖拽到指定位置,类似于工具栏。如设置只能上下拖拽
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
}
MainWindow::~MainWindow()
{
}