QT学习方法:使用手册
1. 使用手册查询函数及函数参数:产看addToolBar函数位置参数,可以直接将此函数复制到帮助手册搜索框中,之后点击文档中对应函数参数进行查看。
2. 有类名忘记时,可以在帮助手册中输入记住的关键字,例如QTextEdit可以输入edit进行查询。
QMainWindow是一个为用户提供主窗口程序的类,包含:
1. 一个菜单栏
2. 多个工具栏
3. 多个铆接部件
4. 一个状态栏
5. 一个中心部件
使用代码实现QMainWindow各种窗口
一. 菜单栏
1. 创建菜单栏的方法1:2、3两条语句虽然在语义上有些重复,但是可以通过测试来查看实际效果。组合使用才是比较完整的。
QMenuBar *m = new QMenuBar();
m->setParent(this); //设置父对象
this->setMenuBar(m); //添加菜单栏
2. 创建菜单栏的方法2:凡是只能创建一个的部件,都可以使用此方法。
QMenuBar *m = this->menuBar();
3. 菜单栏(QMenuBar)、菜单(QMenu)、菜单项(QAction)、分隔符(Separator)
QMenuBar *m = this->menuBar();
QMenu *fileMenu = m->addMenu("文件");
QMenu *editMenu = m->addMenu("编辑");
fileMenu->addSeparator(); //添加分隔符
QAction *create = fileMenu->addAction("新建");
QAction *copy = editMenu->addAction("复制");
二. 工具栏
1. 创建:添加工具栏时可以设置停靠。
QToolBar *toolBar = new QToolBar(this);
this->addToolBar(Qt::LeftToolBarArea, toolBar);
2. 设置可以拖动到的位置。
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
3. *设置浮动
toolBar->setFloatable(false);
4. 工具栏(QToolBar)、菜单项(QAction)
toolBar->addAction(create);
toolBar->addSeparator(); //添加分隔符
toolBar->addAction(copy);
三. 状态栏
1. 创建:
QStatusBar *statusBar = this->statusBar();
2. 添加标签:
QLabel *label = new QLabel("提示信息", this);
QLabel *label2 = new QLabel("右侧提示信息", this);
statusBar->addWidget(label); //左侧添加
statusBar->addPermanentWidget(label2); //右侧添加
四. 铆接部件
1. 创建:
QDockWidget *dock = new QDockWidget("中心部件", this);
this->addDockWidget(Qt::BottomDockWidgetArea, dock);
2. 允许拖动位置:
dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
五. 中心部件
1. 创建:中心部件虽然只能有一个,但是有多种,所以还是使用new来创建,此处要使用set来“设置”而不是使用add“添加”。
QTextEdit *edit = new QTextEdit(this);
this->setCentralWidget(edit);
使用ui界面设置器实现QMainWindow各种窗口
ui界面设置器默认提供了菜单栏、状态栏和工具栏。
一. 菜单栏
在菜单栏中输入中文作为菜单,之后输入的菜单项必须是英文,在代码中可以使用的名称默认为actionopen等。
1. 点击菜单项可以在QAction中修改text项以修改显示的名称。
2. 点击菜单项可以在QObject中修改objectName项以修改在代码中使用的名称。
二. 工具栏
可以使用创建好的菜单项进行添加:将Action Editor中的菜单项拖拽放入工具栏即可。
添加资源文件
1. 添加:添加新文件 -> Qt Resource File -> 前缀 -> 资源文件 -> 编译
2. 使用:: + 前缀 + 文件名
ui->actionxxx->setIcon(QIcon(":/Image/xxx.png"));