- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
标题栏
基本概念
设置窗口标题
隐藏标题栏
UI编辑器
窗口关闭事件
窗口大小调整事件
窗口移动事件
自定义标题栏
菜单栏
基本概念
设置菜单栏(API)
设置菜单栏(UI)
工具栏
基本概念
设置工具栏(API)
设置工具栏(UI)
状态栏
基本概念
设置状态栏(API)
标题栏
-
基本概念
- 标题栏是窗口管理系统(如 Windows、macOS、Linux 等)的一部分,用于显示窗口的标题和控制按钮(如最小化、最大化和关闭按钮)。在 Qt 中,标题栏是由窗口管理系统处理的,但我们可以通过 Qt 提供的方法来设置标题栏的内容和行为。
-
设置窗口标题
- 使用
QWidget
或其子类(如QMainWindow
)的setWindowTitle()
方法可以设置窗口的标题。
- 使用
-
隐藏标题栏
- 可以通过设置窗口标志(Window Flags)来隐藏窗口的标题栏
window.setWindowFlags(Qt::FramelessWindowHint);
- 可以通过设置窗口标志(Window Flags)来隐藏窗口的标题栏
-
UI编辑器
-
选择主窗口(如
QMainWindow
或QWidget
)。 -
在右侧的属性编辑器中,找到
windowTitle
属性。 -
设置
windowTitle
属性为您希望的标题文本。
-
-
窗口关闭事件
- 处理窗口关闭事件可以覆盖
closeEvent
方法
- 处理窗口关闭事件可以覆盖
-
窗口大小调整事件
- 处理窗口大小调整事件可以覆盖
resizeEvent
方法
- 处理窗口大小调整事件可以覆盖
-
窗口移动事件
- 处理窗口移动事件可以覆盖
moveEvent
方法
- 处理窗口移动事件可以覆盖
-
自定义标题栏
- 在某些情况下,您可能希望完全自定义标题栏的外观和行为。可以通过隐藏默认的标题栏并创建自定义的标题栏来实现。
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) , ui(new Ui::MainWindow)
{ui->setupUi(this);//窗口标题this->setWindowTitle("0xCC");//隐藏标题//this->setWindowFlags(Qt::FramelessWindowHint);}class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();public://窗口关闭void closeEvent(QCloseEvent *event) override{if(QMessageBox::question(this, "提示", "是否关闭窗口") == QMessageBox::Yes){this->close();}}//窗口大小//virtual void resizeEvent(QResizeEvent *event)// const QSize &size() const//窗口移动//virtual void moveEvent(QMoveEvent *event)//const QPoint &pos() constprivate:Ui::MainWindow *ui;
};
-
菜单栏
-
基本概念
- 菜单栏是应用程序窗口的一部分,包含一个或多个菜单,每个菜单又包含多个菜单项。菜单项可以是命令、子菜单或其他功能,如复选框和单选按钮。菜单栏在
QMainWindow
中默认提供,并可以通过编程或使用 Qt Designer 进行设置。
- 菜单栏是应用程序窗口的一部分,包含一个或多个菜单,每个菜单又包含多个菜单项。菜单项可以是命令、子菜单或其他功能,如复选框和单选按钮。菜单栏在
-
设置菜单栏(API)
-
在 Qt 中,可以通过
QMenuBar
类来创建和管理菜单栏。 -
菜单栏 - QMenuBar
-
菜单项 - QMenu
-
子菜单 - QAction
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this);//创建菜单栏 QMenuBar* menuBar = new QMenuBar(this);//创建菜单项 QMenu* fileMenu = new QMenu("文件", this); QMenu* EditMenu = new QMenu("编辑", this);//关联菜单项 menuBar->addMenu(fileMenu); menuBar->addMenu(EditMenu);//添加子菜单 QAction* openAction = new QAction("打开", this); QAction* exitAction = new QAction("退出", this); QAction* copyAction = new QAction("复制", this);fileMenu->addAction(openAction); fileMenu->addAction(exitAction); EditMenu->addAction(copyAction);//关联槽函数 connect(exitAction, &QAction::triggered, this, &MainWindow::close);//设置菜单栏 this->setMenuBar(menuBar); }
-
-
设置菜单栏(UI)
-
设置步骤
-
打开 Qt Designer 并加载您的主窗口 UI 文件。
-
在窗口顶部,找到菜单栏区域(通常显示为“Type Here”)。
-
点击“Type Here”并输入菜单名称(如“File”)。
-
右键单击新创建的菜单,选择“Add Action”创建菜单项。
-
在属性编辑器中,可以设置菜单项的属性,如文本、快捷键和图标。
-
-
属性设置
-
菜单
-
title:菜单的标题文本。
-
enabled:是否启用菜单,默认为
true
。 -
visible:是否可见,默认为
true
。(setVisible)
-
-
菜单项
-
text:菜单项的文本。
-
icon:菜单项的图标。
-
shortcut:菜单项的快捷键,例如
Ctrl+O
。 -
checkable:是否为可选菜单项(复选框或单选按钮),默认为
false
。 -
checked:如果
checkable
为true
,则表示菜单项是否被选中,默认为false
。 -
enabled:是否启用菜单项,默认为
true
。 -
visible:是否可见,默认为
true
。
-
-
-
-
工具栏
-
基本概念
-
在 Qt 中,工具栏(
QToolBar
)是用户界面中常用的一个组件,用于快速访问应用程序中最常用的功能。 -
QToolBar:Qt 中的工具栏类,继承自
QWidget
。 -
QAction:表示一个可以添加到菜单、工具栏或上下文菜单的操作。
-
-
设置工具栏(API)
-
创建工具栏 - QToolBar
-
添加动作到工具栏 - addAction
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) , ui(new Ui::MainWindow) {ui->setupUi(this);//创建工具栏QToolBar* toolBar = new QToolBar(this);//设置工具栏this->addToolBar(toolBar);//添加工具项QAction* newAction = new QAction("New", this);QAction* openAction = new QAction("Open", this);QAction* saveAction = new QAction("Save", this);//关联工具项toolBar->addAction(newAction);toolBar->addAction(openAction);toolBar->addAction(saveAction);//绑定控件类QLineEdit* lineEdit = new QLineEdit(this);toolBar->addWidget(lineEdit);//设置停靠区域toolBar->setAllowedAreas(Qt::TopToolBarArea | Qt::LeftToolBarArea);//设置浮动toolBar->setFloatable(0);//设置移动toolBar->setMovable(1);//创建工具栏QToolBar* toolBar2 = new QToolBar(this);//设置工具栏this->addToolBar(Qt::BottomToolBarArea,toolBar2);//添加工具项QAction* copyAction = new QAction("copy", this);QAction* pasteAction = new QAction("Paste", this);QAction* cutAction = new QAction("Cut", this);//关联工具项toolBar2->addAction(copyAction);toolBar2->addAction(pasteAction);toolBar2->addAction(cutAction);}
-
-
设置工具栏(UI)
-
添加工具栏:
-
在主窗口上右键点击,选择“添加工具栏”。
-
-
设置工具栏属性:
-
在属性编辑器中,可以设置工具栏的名称、浮动性、可移动性等属性。
-
-
添加动作:
-
在动作编辑器中创建动作,然后将动作拖拽到工具栏上。
-
-
属性设置
-
objectName:控件的内部名称,用于代码中引用该工具栏。
-
windowTitle:工具栏的窗口标题,通常在工具栏浮动时显示。
-
allowedAreas:定义工具栏可以停靠的区域(顶部、底部、左侧、右侧或任意组合)。
-
floatable:是否允许工具栏浮动。如果设置为 true,工具栏可以被拖出主窗口并独立显示。
-
movable:是否允许移动工具栏。如果设置为 true,用户可以拖动工具栏并重新定位。
-
orientation:工具栏的方向,默认为水平方向(Qt::Horizontal),也可以设置为垂直方向(Qt::Vertical)。
-
iconSize:工具栏中图标的大小。可以设定一个 QSize 来指定宽度和高度。
-
toolButtonStyle:工具栏按钮的样式。可以是只显示图标、只显示文字、同时显示或者按照按钮的默认设置。
-
-
-
状态栏
-
基本概念
-
在 Qt 应用程序中,状态栏(
QStatusBar
)通常位于应用程序窗口的底部,用于显示临时的状态信息、提示信息或其他动态内容。 -
状态栏(QStatusBar):显示应用程序的当前状态信息和其他短暂的信息。通常用于提示用户当前的操作状态、显示进度或提供简单的帮助信息。
-
-
设置状态栏(API)
-
创建并设置状态栏 - 使用
QMainWindow
的statusBar()
方法创建和获取状态栏实例。 -
显示简单文本信息 - 使用
showMessage()
方法在状态栏显示文本。 -
添加永久信息 - 可以使用
addPermanentWidget()
方法在状态栏中添加永久的控件(如标签或进度条)。
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) , ui(new Ui::MainWindow) {ui->setupUi(this);QStatusBar* statusBar = new QStatusBar(this);this->setStatusBar(statusBar);statusBar->showMessage("欢迎进入QT学习", 3000);QLabel* labelVer = new QLabel("Ver -> 1.0", this);statusBar->addPermanentWidget(labelVer);QProgressBar* progressBarFile = new QProgressBar(this);progressBarFile->setRange(0, 100);statusBar->addPermanentWidget(progressBarFile);progressBarFile->setValue(66);connect(ui->pushButton, &QPushButton::clicked, [=](){statusBar->showMessage("FileSave", 2000);});}
-