- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
标题栏
基本概念
- 标题栏是窗口管理系统(如 Windows、macOS、Linux 等)的一部分,用于显示窗口的标题和控制按钮(如最小化、最大化和关闭按钮)。在 Qt 中,标题栏是由窗口管理系统处理的,但我们可以通过 Qt 提供的方法来设置标题栏的内容和行为。
设置窗口标题
- 使用
QWidget
或其子类(如QMainWindow
)的setWindowTitle()
方法可以设置窗口的标题。
隐藏标题栏
- 可以通过设置窗口标志(Window Flags)来隐藏窗口的标题栏
window.setWindowFlags(Qt::FramelessWindowHint);
UI编辑器
-
选择主窗口(如
QMainWindow
或QWidget
)。 -
在右侧的属性编辑器中,找到
windowTitle
属性。 -
设置
windowTitle
属性为您希望的标题文本。
窗口关闭事件
- 处理窗口关闭事件可以覆盖
closeEvent
方法
窗口大小调整事件
- 处理窗口大小调整事件可以覆盖
resizeEvent
方法
窗口移动事件
- 处理窗口移动事件可以覆盖
moveEvent
方法
自定义标题栏
- 在某些情况下,您可能希望完全自定义标题栏的外观和行为。可以通过隐藏默认的标题栏并创建自定义的标题栏来实现。
cpp
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
cpp
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
cpp
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()
方法在状态栏中添加永久的控件(如标签或进度条)。
cpp
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);
});
}