Qt笔记 mainwindow

mainwindow是用来做应用界面的,有菜单栏,工具栏,浮动窗口,中心部件以及状态栏这几个部分组成。

举个例子:

1.菜单栏:

cpp 复制代码
#include <QMenuBar>

QMenuBar *menubar = new QMenuBar(this);
setMenuBar(menubar);//设置到当前窗口

为菜单栏设置菜单:

cpp 复制代码
QMenu *file = menubar->addMenu("文件(&F)");
//为菜单栏添加一个菜单,名字叫"文件",调用快捷键是alt+F

为菜单设置动作:

cpp 复制代码
fill->addAction("打开文件(&O)");

2.设置工具栏:

cpp 复制代码
QToolBar *toolbar = new QToolBar(this);
addToolBar(toolbar);//将工具栏设置到窗口

为工具栏添加动作:

cpp 复制代码
toolbar->addAction("工具");

3.状态栏

设置状态栏

cpp 复制代码
#include <QStatusBar>
QStatusBar *stbar = new QStatusBar(this);
setStatusBar(stbar);//状态栏也是只有一个
复制代码
因为是状态栏,是栏,不能直接设置文本,但可以通过添加组件的方式来显示文本
cpp 复制代码
#include <QStatusBar>
#include <QLabel>

    //StatusBar
    //设置状态栏
    QStatusBar *stbar = new QStatusBar(this);
    setStatusBar(stbar);//状态栏也是只有一个
    QLabel *label = new QLabel(this);
    label->setText("状态栏");
    stbar->addWidget(label);//因为是状态栏,是栏,不能直接设置文本,但可以通过添加组件的方式来显示文本

4.浮动窗口

cpp 复制代码
#include <QDockWidget>
 //Dock Widget
    //设置浮动窗口
    QDockWidget *dock = new QDockWidget("小窗口",this);
//设置浮动窗口的同时可以设置名称;
    addDockWidget(Qt::LeftDockWidgetArea, dock);//因为浮动窗口可以有多个,所以应该用add,浮动窗口的位置是相对于中心部件的

5.设置中心部件

复制代码
一般的中心部件都是文本编辑器
cpp 复制代码
#include <QTextEdit>
    //central widget
    //一般的中心部件都是文本编辑器
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);//中心部件只有一个,因此应该用set

6.为组件设置图片

如何将图片加入到工程文件,使得该工程文件调用图片不受绝对目录的影响。

1)首先创建工程Qt源文件

点击Open in Editor

填写前缀后增加文件到工程目录上

2)引用Qt源文件中的资源

cpp 复制代码
    ui->setupUi(this);
    ui->actionnew->setIcon(QIcon(":/Image/images/new.png"));
    ui->actionclose->setIcon(QIcon(":/Image/images/close.png"));
    ui->actionopen->setIcon(QIcon(":/Image/images/open.png"));

注意引用格式":/.../.../",这个双引号不要忘了,否则引用资源不成功。

actionnew等都是菜单下的action模块

这样就可以做到在工程文件中引用资源,而不是依靠绝对路径。

相关推荐
小徐不徐说25 分钟前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang40 分钟前
Notes: Python pybind11 import C++ module
开发语言·c++·python
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3271 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
蒸蒸yyyyzwd2 小时前
AI应用相关可能的面试问题
笔记
Dxy12393102162 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷2 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang2 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
叼烟扛炮3 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
nice_lcj5203 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试