Qt中QMainWindow的相关介绍

目录

菜单栏

工具栏

状态栏:

停靠窗口:

QMainWindow 是标准基础窗口中结构最复杂的窗口,其组成如下:

提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口
菜单栏:只能有一个,位于窗口的最上方
工具栏:可以有多个,默认提供了一个,窗口的上下左右都可以停靠
状态栏:只能有一个,位于窗口最下方
停靠窗口:可以有多个,默认没有提供,窗口的上下左右都可以停靠

菜单栏

添加菜单项,关于顶级菜单可以直接在 UI 窗口中双击,直接输入文本信息即可,对应子菜单项也可以通过先双击在输入的方式完成添加,但是这种方式不支持中文的输入。

Qt中QMainWindow的相关介绍_第1张图片

常用的添加方式

一般情况下,我们都是先在外面创建出 QAction 对象,然后再将其拖拽到某个菜单下边,这样子菜单项的添加就完成了。

Qt中QMainWindow的相关介绍_第2张图片

 

Qt中QMainWindow的相关介绍_第3张图片

将创建好的open_action拖拽到“文件”的位置,显示红线时松手

Qt中QMainWindow的相关介绍_第4张图片Qt中QMainWindow的相关介绍_第5张图片

 运行程序:

Qt中QMainWindow的相关介绍_第6张图片

在mainwindow中添加这段代码 :

    connect(ui->open_action,&QAction::triggered,this,[=]()
    {
        QMessageBox::information(this,"clicked","你好呀");
    });

再点击打开时,会弹出窗口 

 Qt中QMainWindow的相关介绍_第7张图片

 工具栏

 

示例(

这段代码是将一个按钮和一个文本输入框添加到一个工具栏中。

首先,通过 ui->toolBar->addWidget() 函数,将一个新的 QPushButton 对象添加到工具栏中,并设置按钮的文本为 "搜索"。

接下来,创建一个 QLineEdit 对象,并通过 ui->toolBar->addWidget() 函数将其添加到工具栏中。这个 QLineEdit 是一个用于接收用户输入的文本输入框。

edit->setMaximumWidth(200);,则表示将文本输入框的最大宽度设置为 200 像素。

通过调用 edit->setMaximumWidth() 函数,可以设置 QlineEdit 的最大宽度,以限制用户在输入时的可见宽度。

通过 edit->setFixedWidth() 函数,设置文本输入框的固定宽度为 100 像素。这会限制文本输入框的宽度,确保它在工具栏中占据固定的空间。

这样,你的工具栏就包含了一个按钮和一个文本输入框,用户可以点击按钮或在文本输入框中输入内容进行相应的操作。

):

    ui->toolBar->addWidget(new QPushButton("搜索"));
    QLineEdit* edit = new QLineEdit;
    //edit->setMaximumWidth(200);
    edit->setFixedWidth(100);
    ui->toolBar->addWidget(edit);

Qt中QMainWindow的相关介绍_第8张图片

工具栏属性介绍: 

 Qt中QMainWindow的相关介绍_第9张图片

 movable:用于指定工具栏是否可移动

allowedAreas:定义了工具栏可以放置的区域

orientation:它指定了工具栏的布局方向

iconSize:用于设置工具栏中图标的大小

toolButtonStyle:用于设置工具栏按钮的样式

floatable:用于指定工具栏是否可拖动浮动

状态栏:

一般情况下,需要在状态栏中添加某些控件,显示某些属性,使用最多的就是添加标签 QLabel

QStatusBar 是一个用于显示状态消息或临时消息的窗口部件。它提供了一些常用的方法来添加小部件、清除消息和显示消息。

1. addWidget(QWidget *widget, int stretch = 0): 该方法可以向状态栏中添加一个小部件。widget 是要添加的小部件的指针,stretch 是可选参数,用于设置小部件的拉伸因子。拉伸因子用于控制小部件在状态栏中的布局位置。默认情况下,拉伸因子为0,表示小部件不会拉伸,并紧密地放置在状态栏中。

2. clearMessage(): 该方法用于清除状态栏中的消息。如果有消息当前显示在状态栏上,则会被移除。

3. showMessage(const QString &message, int timeout = 0): 该方法用于在状态栏中显示一条消息。message 是要显示的消息文本,timeout 是可选参数,用于设置消息显示的持续时间(以毫秒为单位)。如果 timeout 设置为 0(默认值),则消息将一直显示,直到被清除。

// 类型: QStatusBar
void QStatusBar::addWidget(QWidget *widget, int stretch = 0);

[slot] void QStatusBar::clearMessage();
[slot] void QStatusBar::showMessage(const QString &message, int timeout = 0);

示例(在状态栏添加按钮和标签): 

    QPushButton* button = new QPushButton("按钮");
    ui->BAR->addWidget(button);
    // 标签
    QLabel* label = new QLabel("hello,world");
    ui->BAR->addWidget(label);

 

Qt中QMainWindow的相关介绍_第10张图片

 停靠窗口:

找到Containers下的Dock Widget控件,拖到ui界面中

Qt中QMainWindow的相关介绍_第11张图片

 

QDockWidget 的重要属性:

1. titleBarWidget: 用于设置自定义标题栏部件的属性。可以通过设置一个QWidget派生类的指针来替换默认的标题栏。

2. allowedAreas: 指定允许停靠的区域。可以使用 Qt::DockWidgetAreas 枚举值来设置,如 Qt::LeftDockWidgetArea、Qt::RightDockWidgetArea、Qt::TopDockWidgetArea、Qt::BottomDockWidgetArea。可以通过按住Ctrl键并拖动窗口来限制其停靠区域。

3. features: 用于启用或禁用 QDockWidget 的功能。可以使用 Qt::DockWidgetFeature 枚举值来设置,如 Qt::DockWidgetClosable(可关闭)、Qt::DockWidgetMovable(可移动)、Qt::DockWidgetFloatable(可浮动)等。

4. floating: 指定 QDockWidget 是否处于浮动状态。可以使用 `dockWidget->setFloating(true)` 将其设置为浮动状态。

5. sizeHint: 指定停靠窗口的首选大小。可以使用 `dockWidget->setMinimumSize(QSize(width, height))` 和 `dockWidget->setMaximumSize(QSize(width, height))` 方法来设置最小和最大大小。

6. allowedAreas、features 和 floating 这些属性可以通过 `dockWidget->setAllowedAreas(areas)`、`dockWidget->setFeatures(features)` 和 `dockWidget->setFloating(floating)` 这样的方法进行设置。

你可能感兴趣的:(#,QT,qt)