代码添加toolbar(Cocoa)

PySide6数据工具开发:从Jupyter到双击即用的交付实践 桌面GUI应用是数据工程落地的关键一环,它将Python数据分析能力封装为业务人员可直接操作的交互式产品。PySide6作为Qt官方Python绑定,凭借LGPL许可证、跨平台原生支持与Matplotlib/Plotly深度集成能力,成为构建企业级数据探查工具的首选框架。其核心在于事件循环机制、布局管理器驱动的响应式UI、信号-槽解耦架构,以及面向可维护性的模块化工程结构。结合PyInstaller打包、高DPI适配与异步渲染优化,开发者能快速交付无需Python环境、支持CSV导入、动态图表与参数交互的独 阅读详情

     在使用完全代码的窗体中,应该需要这段代码加入toolbar。

NSToolbar *tb = [[[NSToolbar alloc] initWithIdentifier:@"abc"] autorelease]; //如果缺少了识别码,运行会报错的
    self.window.toolbar =tb;

  对于通过xib文件或者storyboard添加的窗体,应该不需要的。

   接下来需要对self.window.toolbar设置一下

    [self.window.toolbar setAllowsUserCustomization:YES];  //允许自定义toolbar
    [self.window.toolbar setAutosavesConfiguration:YES];  //允许保存
    [self.window.toolbar setDelegate:(id)self];  //设置代理类
    [self.window.toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];  //设置显示类型为图片+文字

 接下来用到几个toolbar相关的接口


-(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
{
    //NSToolbarFlexibleSpaceItem
    //zoom
    NSArray *list = [NSArray arrayWithObjects:@"add-abc", nil];
    return list;
}

-(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
{
    NSArray *list = [NSArray arrayWithObjects:@"add-abc", nil];
    return list;
}

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
    if ([itemIdentifier isEqualToString:@"add-abc"]) {
        NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:@"add-abc"] autorelease];
        [item setImage:[NSImage imageNamed:@"Add-ABC"]];
        [item setPaletteLabel:@"ABC TEST"];
        [item setLabel:@"ABC TEST"];
        
        [item setMinSize:CGSizeMake(25, 25)];
        [item setMaxSize:CGSizeMake(100, 100)];
        
        [item setTarget:self];
        [item setAction:@selector(onAddABC:)];
        return item;
    }
    else
    {
    		//窗体上的toolbar自动放行
        NSToolbarItem *item = nil;
        for (int i=0; i<self.window.toolbar.items.count; i++) {
            NSToolbarItem *tmp = [self.window.toolbar.items objectAtIndex:i];
            if ([tmp.itemIdentifier isEqualToString:itemIdentifier]) {
                item = tmp;
                break;
            }
        }
        return item;
    }
    return nil;
}


-(IBAction)onAddABC:(id)sender
{
    NSLog(@"%s",__FUNCTION__);
}

解释一下,这里是添加一个识别码为“add-abc”,图片名为“Add-ABC.png”(jpg也可以的),标题为“ABC TEST”的项。这些类似流程在网上应该不难找到,然而很尴尬的发现,窗体界面并没有看到自定义项,需要在toolbar上右键才找到“ABC TEST”,需要手动拉到显示区域。原因是在初始化的时候少了一段代码。所以要将第二个代码段改一下,如下:


    [self.window.toolbar setAllowsUserCustomization:YES];
    [self.window.toolbar setAutosavesConfiguration:YES];
    [self.window.toolbar setDelegate:(id)self];
    [self.window.toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];

    [self.window.toolbar insertItemWithItemIdentifier:@"add-abc" atIndex:0];  //添加这行就能在toolbar上默认显示。

macOS-NSToolBar NSToolBar 1 简述 工具栏,用于管理窗口标题栏下方和应用程序的自定义内容上方的空间,以快速访问应用程序功能。 2 源码注解 @interface NSToolbar : NSObject 2.1 初始化创建 - (instancetype)initWithIdentifier:(NSToolbarIdentifier)identifier NS_DESIGNATED_INITIALIZER; - (instancetype)init API_AVAILABLE(macos(10.13)); 2 阅读详情

相关推荐

CatalystSidebarToolbar:Catalyst的简单边栏NSToolbar示例

CatalystSidebar工具栏 Catalyst的简单边栏/ NSToolbar示例

09. NSToolBar工具栏、NSMenu菜单、NSStatusBar状态栏

本文主要介绍了 OS X 应用中菜单、工具栏和状态栏的相关内容,是 UI 编程的重要部分。包括 NSToolbar 工具栏的构成、基本设置、事件响应和编程实现;NSMenu 的属性、自定义弹出菜单及其他设置;NSStatusBar 系统右上角状态栏图标的三种方式(按钮 / 文字、下拉菜单、弹出层窗口)。

编程是一门实践技术 1190

CodeCanyon工具栏「CodeCanyon Toolbar」-crx插件

此扩展程序在CodeCanyon注释框上方显示一个工具栏,以便您轻松格式化评论中的文本 如果您是CodeCanyon上的卖家,您知道您的买家使用CodeCanyon上的评论部分向您提出技术问题。不幸的是,CodeCanyon评论框不允许您轻松地设置您的响应文本的格式。如果使用相应的html标签,可以添加一些格式(比如粗体或斜体),但是这很枯燥。 CodeCanyon工具栏扩展在CodeCanyon页面上的每个评论框上方(在作者仪表板和项目的评论页面上)添加一个工具栏。通过这种方式,您可以设置回复的格式,为买家提供更有意义的答案。 支持语言:English

关于NSToolbar的使用

在讨论苹果环境下的开发,不可避免会引用到官方文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Toolbars/Toolbars.html 这里讨论的是使用代码来创建工具栏: [cpp] view plaincopy - (void)layo

yuanya的专栏 1427

睿尔曼超轻量仿人机械臂--PLC控制

PLC通过以太网与机械臂创建socket连接,PLC发送JSON协议控制机械臂进行物料抓取。

weixin_61488836的博客 2464

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1169

NSToolbar 及自定义

2023-07-26(三)

AI工程化、开源分享、文档翻译、代码笔记 540

教程 | VeriStand硬件在环仿真测试第一章

这篇是系列文章的第一章,满满的都是干货,感兴趣的话欢迎一起交流探讨。

HUASUITECH的博客 1万+

NSToolBar

Toolbar 和左上角控制窗口关闭、最小化和全屏的三个按钮在同一行。 self.window.titleVisibility = NSWindowTitleHidden; NSToolbarItem 类属性字段说明 //item所属的toolbar对象 @property (readonly, assign) NSToolbar *toolbar; //too

mac的专栏 2470

Aix升级和安装ssh配置过程

Aix升级和安装ssh配置过程Aix升级和安装ssh配置过程配置前背景配置步骤 Aix升级和安装ssh配置过程 部门IBM小型机的Aix操作系统需要进行ssh补丁修复,修复其实就是ssh版本你的升级,对升级的过程和中途遇到的问题做了记录如下。 配置前背景 操作系统: gdboss2/>uname -u //操作系统的Aix5.3 IBM,020693E5P gdboss2/&gt...

阿阿阿唱的博客 2990

从NHANES到发表:如何用survey包完成符合CDC要求的统计分析(含完整R代码)

本文详细介绍了如何利用R语言的survey包,对美国国家健康与营养调查数据进行符合CDC要求的统计分析。文章重点解析了NHANES数据的复杂抽样设计、权重变量的正确选择与调整,并提供了从数据获取、清洗、构建调查设计对象到执行加权回归及生成发表级表格的完整R代码实战指南,帮助研究者避免常见错误,确保分析结果的准确性与可发表性。

weixin_29054245的博客 521

探索macOS中的全能工具栏:toolbar(NSToolbar example)

探索macOS中的全能工具栏:toolbar(NSToolbar example) 在这个开源项目中,你将发现如何在macOS AppKit框架下,以编程方式构建功能强大的NSToolbar。这个示例不仅教你如何创建基本的NSToolbarItem,还将向你展示一系列特殊类型的元素,如NSMenuToolbarItem,NSSharingServicePickerToolbarItem,NSSea...

gitblog_00031的博客 649

懒人精灵手游内存技术分析

教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。

yizhihaoren123的博客 1656

在Xcode以及Interface Builder下简单使用Cocoa

下面写下建一个简单的程序,来说明如何使用macintosh的IDE 中的Xcode以及Interface Builder 做简单的Cocoa开发,为初学者学习 程序功能是把一个text里的数字复制到一个lable里 1.创建项目: 双击Xcode程序图标 如果是第一次打开

Code Heaven 1296

音视频入门:H264、H265概念总结

添加链接描述 什么是H.264与H.265 H.264与H.265都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。H.264是目前比较主流的压缩算法,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。 H.265是比较新的压缩算法,可以更一步提高压缩比,随着我们现在生活中出现的视频格式越来越大(比如现在基本都是1080P甚至4K的显示器

weixin_40673765的博客 8936

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 377

GHelper 风扇曲线 + 充电上限 + GPU 模式:华硕本轻量性能控制完整指南(附参数表)

只想把风扇调静音,奥创中心却先弹一个更新窗口,后台服务在托盘里常年趴着不走。GHelper 是华硕笔记本(ROG 幻/枪神/魔霸、天选、Vivobook、Zenbook、ROG Ally 等)的性能控制工具:一个 exe,装不上任何东西,性能模式、风扇曲线、电池充电上限、GPU 切换全在同一个面板里改。它只管调参——切 BIOS 里华硕早就写好的那几个性能档位,风扇曲线和功耗上限也只在你本机范围内

gitblog_01168的博客 423

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ios学习笔记之UI篇(六):多视图应用程序

首先要创建Empty Application,再创建在ios平台下cocoa touch的类,创建一个根控制器,重复前一步骤再创建两个类,再为每个内容视图分别创建xib文件(ios平台下user interface的view模版),目录结构如图, 然后修改应用程序委托,修改appdelegate.h文件 #import @class BIDSwitchViewController; @i

HelloWinter的专栏 1262

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Sequel Pro深度解析:macOS原生MySQL管理工具的技术架构与实战指南

在macOS开发者的日常工作中,数据库管理工具的选择往往决定了开发效率的天花板。想象这样一个场景:凌晨2点,你正在紧急修复生产环境的数据问题,Navicat卡顿无响应,MySQL Workbench的复杂界面让你眼花缭乱,而DBeaver的Java运行时又消耗着宝贵的内存资源。这时,一个轻量级、响应迅速且深度集成macOS生态的数据库工具就显得尤为重要——这正是Sequel Pro诞生的初衷。

gitblog_00931的博客 228

3 步修好 HMCL 证书验证失败:多半是系统时间在捣鬼

如果你打开 HMCL 启动游戏、或者下载资源时看到「证书验证失败」这类报错,先别急着怀疑网络或启动器本身——大多数情况下,真正的元凶是你的系统时间偏离了网络标准时间。HMCL(Hello Minecraft! Launcher)是一款开源跨平台的 Minecraft 启动器,而本文就带你把「HMCL 证书验证失败」这个报错从确认、修复到验证跑完整套流程,整个过程大概 3 分钟就能搞定。 [![H

gitblog_00686的博客 419

自定义NSTitlebar之NSTitlebarAccessoryViewController

在10.10 之后的版本会简单一下,   第一步, 给窗口添加Toolbar, 但删掉Toolbar中的所有内容, 取消Customizable(相当于禁用Toolbar自定义功能)    第二步,  //Swift  window.titleVisibility = .Hidden  //OC  [window setTitleVisibility:NSWindowTitleH

GuiLehan的博客 2512

flutter_acrylic 迁移指南:从 1.0.0 升级到 1.1.0 的完整步骤

flutter_acrylic 是一款让 Flutter 桌面应用实现 **窗口毛玻璃效果** 的开源插件,支持 Windows 的 acrylic、mica 以及透明度效果,并同时覆盖 macOS 与 Linux 平台。如果你正在使用 flutter_acrylic 1.0.0,并希望升级到 1.1.0,那么这篇 **flutter_acrylic 迁移指南** 正是为你准备的——从依赖更新到原

gitblog_01104的博客 977

AI编程实战:零代码经验开发Mac音频管理工具并实现盈利

在软件开发领域,AI辅助编程正从简单的代码补全演变为全流程技术协作。其核心原理是通过自然语言交互,将开发者意图转化为可执行代码,大幅降低技术门槛。这一技术价值在于让开发者能聚焦产品逻辑而非语法细节,尤其适用于快速原型开发与工具类应用构建。在macOS应用开发场景中,Swift与SwiftUI框架常被用于构建原生应用,而音频管理涉及CoreAudio等系统级API。本文以开发一款Mac菜单栏音频工具为例,详细展示了如何利用Claude Code等AI编程工具,从需求分析、权限配置到打包上架,实现从想法到可盈利

weixin_33726313的博客 317

LangSmith调试利器:OpenClaw实现AI应用运行时状态热修改

在AI应用开发中,可观测性与可调试性是保障系统稳定性的关键技术。通过追踪与回调机制,开发者能够监控LLM调用、工具执行等关键节点的输入输出与性能指标。这种能力不仅帮助理解应用内部状态流转,更为复杂工作流的调试提供了基础。OpenClaw项目基于此原理,设计了一个精巧的中间件,它允许开发者在LangSmith的监控流程中,对指定的运行状态进行实时拦截、查看与修改,实现热重载。这项技术显著提升了调试效率,尤其适用于修复因外部API异常或数据格式错误导致的流程中断,并能支持演示场景的路径引导与自动化测试的数据回放

weixin_30301449的博客 617

Drawing a custom window on Mac OS X

http://www.cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html Occasionally, you may want a window to look completely different to the standard window styles provided by Apple. This po

yuanya的专栏 1333

macOS工具栏设计回归:从沉浸到清晰的交互效率革命

在图形用户界面设计中,工具栏作为高频操作的核心控件,其视觉呈现直接影响用户的操作效率与认知负荷。从人机交互原理看,清晰的视觉层次与空间分隔能显著降低用户的目标获取时间,这背后遵循着费茨定律等基础交互原则。当前设计趋势正从极致的扁平化与沉浸感,向强调可用性、可访问性与操作确定性的方向演进,这一转变对提升跨设备体验与深色模式兼容性具有重要技术价值。本文聚焦macOS新版工具栏设计,通过分析其从无边框融入式向独立清晰风格的迭代,深入探讨了如何在SwiftUI、AppKit等框架下进行视觉适配,为开发者提供了从系统

weixin_34074740的博客 329
上一篇: 编程实现NSTextView中选择的文字切换粗体
下一篇: detectMultiScale引发的异常处理
狼风123
博客等级 码龄19年 1058粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值