一、主窗口的概念
应用程序中的主窗口
主窗口是与用户进行长时间交互的顶层窗口
程序的绝大多数直接由主窗口提供
主窗口通常是应用程序启动后显示的第一个窗口
整个程序由一个主窗口和多个对话框组成
QT中的主窗口
Qt开发平台中直接支持主窗口的概念
QMianWindow是Qt中主窗口的基类
QMainWindow继承于QWidget是一种容器类型的组件
QMainWindow中的封装
1.菜单栏
2.工具栏
3.中心组件
4.停靠组件
5.状态栏
在Qt中提供与菜单相关的类组件
在Qt主窗口中创建菜单
二、编程实验 主窗口中创建菜单 NotePad.pro
#include "MainWindow.h"
#include <QMenu>
MainWindow::MainWindow()
{
}
MainWindow* MainWindow::NewInstance()
{
MainWindow* ret = new MainWindow();
if( (ret == NULL) || !ret->construct() )
{
delete ret;
ret = NULL;
}
return ret;
}
bool MainWindow::construct()
{
bool ret = true;
ret = ret && initMenuBar();
return ret;
}
bool MainWindow::initMenuBar() //
{
bool ret = true;
QMenuBar* mb = menuBar();
ret = ret && initFileMenu(mb);
return ret;
}
bool MainWindow::initFileMenu(QMenuBar* mb) //下拉菜单
{
QMenu* menu = new QMenu("File(&F)"); //
bool ret = (menu != NULL); //是否创建成功
if( ret )
{
QAction* action = NULL;
ret = ret && makeAction(action, "New(N)", Qt::CTRL + Qt::Key_N); //下拉菜单的每个选项
if( ret )
{
menu->addAction(action); // add Action item to Menu
}
menu->addSeparator();
ret = ret && makeAction(action, "Exit(X)", Qt::CTRL + Qt::Key_X);
if( ret )
{
menu->addAction(action); // add Action item to Menu
}
}
if( ret )
{
mb->addMenu(menu); // add Menu add to application Menu Bar将下拉菜单加入到菜单栏里面
}
else
{
delete menu;
}
return ret;
}
bool MainWindow::makeAction(QAction*& action, QString text, int key) //
{
bool ret = true;
action = new QAction(text, NULL); //创建action对象
if( action != NULL )
{
action->setShortcut(QKeySequence(key));
}
else
{
ret = false;
}
return ret;
}
MainWindow::~MainWindow()
{
}
快捷键设置
action->setshortcut(QkeySequence(KEY))
QkeySequence -Qt中与快捷键相关的类
KEY -Qt中代表键值的常亮
三、小结
主窗口是与用户进行长时间交互的顶层窗口
主窗口通常是应用程序启动后显示的第一个窗口
QmainWindow是Qt中主窗口的基类
QMainWindow是一种容器类型的窗口组件
QMainWindow中封装了菜单栏,工具栏,状态栏等组件
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。