QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
//只能有一个菜单栏
QMenuBar * menubar = menuBar();
//设置菜单栏
setMenuBar(menubar );
//addMenu函数原型
//QAction *addMenu(QMenu *menu)
//QMenu *addMenu(const QString &title)
//QMenu *addMenu(const QIcon &icon, const QString &title)
//例如我们添加菜单栏内容为,使用一个QMenu对象来接收对象,为下一步的给菜单栏内容添加行为
QMenu * menunew = addMenu("新建");
QMenu * menuopen = addMenu("打开");
4.设置完成菜单栏内容后,需要使用addAction()给菜单添加行为,addAction函数在QActionGroup类内。使用addSeparator()添加分隔符,在QMenu类内
//重载三个函数
QAction *addAction(QAction *action)
QAction *addAction(const QString &text)
QAction *addAction(const QIcon &icon, const QString &text)
//例如使用上一步接收到的Qmenu对象来填加行为
QAction * newfileaction = menunew->addAction("新建文件");
QAction * newprojectaction = menunew->addAction("新建工程");
//添加分隔符
//菜单内容函数原型
QAction *addSeparator()
menunew->addSeparator();
//QToolBar的构造函数
QToolBar(QWidget *parent = nullptr)
QToolBar(const QString &title, QWidget *parent = nullptr)
//我们用来第一个函数来创建对象
QToolBar * toolbar = new QToolBar();
2.将工具栏添加到QMainWindow中,使用addToolBar()函数
//三种不同类型的函数重载
void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
void addToolBar(QToolBar *toolbar)
QToolBar *addToolBar(const QString &title)
//我们使用第一、二种
//第一种
addToolBar(toolbar);
//第二种
//需要额外提供一个工具栏的初始位置
/*
ConstantValue
Qt::LeftToolBarArea 0x1
Qt::RightToolBarArea 0x2
Qt::TopToolBarArea 0x4
Qt::BottomToolBarArea 0x8
Qt::AllToolBarAreas ToolBarArea_Mask
Qt::NoToolBarArea 0
*/
//我们设置初始位置在左边
addToolBar(QT::LeftToolBarArea,toolbar);
//addAction函数原型
QAction *addAction(QAction *action)
QAction *addAction(const QString &text)
QAction *addAction(const QIcon &icon, const QString &text)
//使用示例
toolbar->addAction("新建");
toolbar->addAction(newfileaction); //使用了菜单栏中给菜单添加内容的行为
//函数原型
void setAllowedAreas(Qt::ToolBarAreas areas) //设置工具栏可以移动的范围
void setFloatable(bool floatable) //设置是否可以浮动
void setMovable(bool movable) //设置是否可以移动
//示例
//可以移动的范围
/*
Qt::LeftToolBarArea 0x1
Qt::RightToolBarArea 0x2
Qt::TopToolBarArea 0x4
Qt::BottomToolBarArea 0x8
Qt::AllToolBarAreas ToolBarArea_Mask
Qt::NoToolBarArea 0
*/
//设置可以移动的范围
toolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置是否可以浮动
toolbar->setFloatable(false); //填写bool值类型
//设置是否可以移动
toolbar->setMovable(false); //填写bool值类型
4.我们开可以想工具栏中添加一些小组件,如按钮组件
//函数原型
QAction *addWidget(QWidget *widget)
//示例
QPushButton * pushbutton = new QPushButton("aa",this);
toolbar->addWidget(pushbutton );
//QStatusBar构造函数原型
QStatusBar(QWidget *parent = nullptr)
//示例
QStatusBar * statusbar = new QStatusBar(); //创建一个QStatusBar对象指针
//函数原型
void setStatusBar(QStatusBar *statusbar);
//示例
setStatusBar(statusbar );
//函数原型
void addPermanentWidget(QWidget *widget, int stretch = 0)
void addWidget(QWidget *widget, int stretch = 0)
//示例
//首先创建一个小部件
QLabel * labelleft = QLabel("字数",this);
QLabel * labelright = QLabel("剩余字数",this);
addWidget(labelleft ); //在状态栏左侧添加控件
addPermanentWidget(labelright ); //在状态栏右侧添加控件
//构造函数原型
QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
//示例
QDockWidget * dockwidget = new QDockWidget("浮动",this);
//函数原型
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
//示例
/* 可以铆接的范围
t::LeftDockWidgetArea 0x1
Qt::RightDockWidgetArea 0x2
Qt::TopDockWidgetArea 0x4
Qt::BottomDockWidgetArea 0x8
Qt::AllDockWidgetAreas DockWidgetArea_Mask
Qt::NoDockWidgetArea 0
*/
addDockWidget(LeftDockWidgetArea0x1|TopDockWidgetArea,dockwidget);
//函数原型
void setAllowedAreas(Qt::DockWidgetAreas areas)
//示例
/* 可以浮动的范围
t::LeftDockWidgetArea 0x1
Qt::RightDockWidgetArea 0x2
Qt::TopDockWidgetArea 0x4
Qt::BottomDockWidgetArea 0x8
Qt::AllDockWidgetAreas DockWidgetArea_Mask
Qt::NoDockWidgetArea 0
*/
dockwidget->setAllowedAreas(BottomDockWidgetArea);
除了以上几个部件,中心显示的部件都可以作为核心部件,例如一个记事本文件,可以利用QTextEdit做核心部件
//函数原型
QTextEdit(const QString &text, QWidget *parent = nullptr)
QTextEdit(QWidget *parent = nullptr)
//示例
//创建一个记事本对象
QTextEdit * textedit = new QTextEdit("记事本",this);
//函数原型
void setCentralWidget(QWidget *widget)
//示例
setCentralWidget(textedit );
一个QMainWindows对象
//进行操作界面对象
private:
Ui::mMainWindow *ui;
ui->setupUi(this);
//函数原型
void QWindow::setIcon(const QIcon &icon) //设置图标函数
QIcon(const QString &fileName) //图标类的构造函数 传入的是一个地址
//actionnew是ui创建的一个行为对象,QIcon参数形式:
// ": + 前缀 + 文件路径 + 文件名"
ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));
ui->menu->setIcon(QIcon(":/Image/down.png"));