Qt学习第5节课

目录

  1. 1. -第五章 应用程序主窗口
    1. 1.1. -5.1主窗口框架
      1. 1.1.1. 5.1.1 Qt资源系统、菜单栏和工具栏
        1. 1.1.1.1. 菜单
        2. 1.1.1.2. 菜单栏
        3. 1.1.1.3. 工具栏
        4. 1.1.1.4. 中心部件

-第五章 应用程序主窗口

-5.1主窗口框架

主窗口为创建应用程序用户界面提供了一个框架,Qt提供了QMainWindow和其他一些相关的类共同完成主窗口的管理。QMainWindow类拥有自己的布局,包含如下组件:
菜单栏、工具栏、中心部件、Dock部件(停靠窗口)、状态栏。

5.1.1 Qt资源系统、菜单栏和工具栏

菜单

方法1.改ui文件,可视化操作。
下方添加菜单,双击左上角的“在这里输入”,改为“文件(&F)”,这里使用英文半角的括号,“&F”称为加速键,表明程序运行时可以按下ALT+F键来激活该菜单。….
使用资源 在Qt Resource file中添加文件即可。
方法2.代码方式实现(类构造函数中)。

```
QMenu *editMenu = ui->menubar->addMenu(tr("编辑(&E)"));
QAction *action_open = editMenu->addAction(tr("打开文件(&o)"));
action_open->setShortcut(QKeySequence("Ctrl+o"));
ui->menubar->addAction(action_open);
```

菜单栏

QMenuBar类提供了一个水平的菜单栏,在QMainWindow中可以直接获取默认的菜单栏,向其中添加QMenu类型的菜单对象,然后弹出的菜单中添加QAction类型的动作对象作为菜单项。QMenu还提供了间隔器,可以在设计中添加间隔器。

向构造函数中添加

```
 QActionGroup * group = new QActionGroup(this); //建立动作组,父窗口为

QAction * action_L = group->addAction(tr("左对齐(&L)"));
action_L->setCheckable(true);

QAction *action_R = group->addAction(tr("右对齐(&R)"));
action_R->setCheckable(true);

QAction *action_C = group->addAction(tr("居中对齐(&c)"));
action_C->setCheckable(true);

action_L->setChecked(true);

editMenu->addSeparator();   //向菜单中添加间隔器
editMenu->addAction(action_L); //向菜单中添加动作
editMenu->addAction(action_C);
editMenu->addAction(action_R);
```

工具栏

工具栏QToolBar类提供了一个包含了一组控件的、可以移动的面板。前面已经看到可以将QAction对象添加到工具栏中,默认只是显示一个动作的图标,可以在QToolBar的属性栏中进行更改。

    QToolButton *toolBtn = new QToolButton(this);
    toolBtn->setText(tr("颜色"));
    QMenu * colorMenu = new QMenu(this);
    colorMenu->addAction(tr("红色"));
    colorMenu->addAction(tr("绿色"));
    toolBtn->setMenu(colorMenu);
    toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
    ui->toolBar->addWidget(toolBtn);
    QSpinBox *spinBox = new QSpinBox(this);
    ui->toolBar->addWidget(spinBox);

中心部件

做法:
先引入#include "QTextEdit"#include "QMdiSubWindow"
在Action编辑器中的“新建文件”动作上右击,在弹出的级联菜单中选择“转到槽”,选择triggered()出发信号 OK


void MainWindow::on_action_triggered()
{
    QTextEdit *edit = new QTextEdit(this);
    QMdiSubWindow * child = ui->mdiArea->addSubWindow(edit);
    child->setWindowTitle(tr("多文档编辑器子窗口"));
    child->show();
}