- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
标题栏
-
基本概念
- 标题栏是窗口管理系统(如 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_OBJECT
public:
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() const
private:
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); }); }
-