目录
菜单栏
工具栏
状态栏:
停靠窗口:
QMainWindow 是标准基础窗口中结构最复杂的窗口,其组成如下:
提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口
菜单栏:只能有一个,位于窗口的最上方
工具栏:可以有多个,默认提供了一个,窗口的上下左右都可以停靠
状态栏:只能有一个,位于窗口最下方
停靠窗口:可以有多个,默认没有提供,窗口的上下左右都可以停靠
菜单栏
添加菜单项,关于顶级菜单可以直接在 UI 窗口中双击,直接输入文本信息即可,对应子菜单项也可以通过先双击在输入的方式完成添加,但是这种方式不支持中文的输入。
常用的添加方式
一般情况下,我们都是先在外面创建出 QAction 对象,然后再将其拖拽到某个菜单下边,这样子菜单项的添加就完成了。
将创建好的open_action拖拽到“文件”的位置,显示红线时松手
运行程序:
在mainwindow中添加这段代码 :
connect(ui->open_action,&QAction::triggered,this,[=](){QMessageBox::information(this,"clicked","你好呀");});
再点击打开时,会弹出窗口
工具栏
示例(
这段代码是将一个按钮和一个文本输入框添加到一个工具栏中。
首先,通过 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);
工具栏属性介绍:
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);
停靠窗口:
找到Containers下的Dock Widget控件,拖到ui界面中
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)` 这样的方法进行设置。