我想要一个需要在a中处理的项目列表QListWidget.与Windows Media Player CD导入类似,列表中的每个项目都应该有一个进度条.
现在似乎有一种方法可以通过创建常规进度条来实现此目的,使用QPixmap::grabWidget()它将其外观保存在a中QPixmap,然后将其QPixmap作为Icon 添加到QListWidgetItemvia QListWidgetItem::setIcon().然而,这似乎是非常古怪的.
您是否知道在列表小部件中实现进度条的更优雅方式?
我正在努力了解Core Audio,或者更确切地说:扩展音频文件服务
在这里,我想用来ExtAudioFileRead()从文件中读取一些音频数据.
只要我使用一个巨大的缓冲区来存储我的音频数据(即一个AudioBuffer),这就可以正常工作.只要我使用多个AudioBuffer,就会ExtAudioFileRead()返回错误代码-50("参数列表中的错误").据我所知,这意味着其中一个论点ExtAudioFileRead()是错误的.可能是audioBufferList.
我不能使用一个巨大的缓冲区,因为那时,dataByteSize它将溢出其UInt32整数范围与巨大的文件.
这是创建的代码audioBufferList:
AudioBufferList *audioBufferList;
audioBufferList = malloc(sizeof(AudioBufferList) + (numBuffers-1)*sizeof(AudioBuffer));
audioBufferList->mNumberBuffers = numBuffers;
for (int bufferIdx = 0; bufferIdx<numBuffers; bufferIdx++ ) {
audioBufferList->mBuffers[bufferIdx].mNumberChannels = numChannels;
audioBufferList->mBuffers[bufferIdx].mDataByteSize = dataByteSize;
audioBufferList->mBuffers[bufferIdx].mData = malloc(dataByteSize);
}
Run Code Online (Sandbox Code Playgroud)
这是工作但溢出的代码:
UInt32 dataByteSize = fileLengthInFrames * bytesPerFrame; // this will overflow
AudioBufferList *audioBufferList = malloc(sizeof(audioBufferList));
audioBufferList->mNumberBuffers = 1;
audioBufferList->mBuffers[0].mNumberChannels = numChannels;
audioBufferList->mBuffers[0].mDataByteSize = dataByteSize; …Run Code Online (Sandbox Code Playgroud) 我有一个NSScrollView子类,我想NSView根据当前的滚动位置更新另一个.我试图KVC-观察value的[self horizontalScroller],但从来没有被调用.
// In awakeFromNib
[[self horizontalScroller] addObserver:self
forKeyPath:@"value"
options:NSKeyValueObservingOptionNew
context:NULL];
// Later in the file
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if (object == [self horizontalScroller] && [keyPath isEqualToString:@"value"]) {
// This never gets called
}
}
Run Code Online (Sandbox Code Playgroud)
您是否在我的推理中看到错误或者知道如何观察滚动的更好方法NSScrollview?
我为Linux bash shell编写了一个脚本.
一行获取文件名列表并对其进行排序.该列表如下所示:
char32.png char33.png [...] char127.png
Run Code Online (Sandbox Code Playgroud)
它从32到127. ls此列表的默认排序是这样的
char100.png char101.png [...] char32.png char33.png [...] char99.png
Run Code Online (Sandbox Code Playgroud)
幸运的是sort,有一个方便的-V开关可以正确地对列表进行排序(如第一个例子中所示).
现在,我必须将此脚本移植到OSX,并且sort在OSX中缺少-V交换机.
您是否对如何正确排序此列表有一个聪明的想法?
在过去的几天里,我一直在尝试使用Python进行音频开发.
问题是,Mac OSX不能很好地处理卸载.实际上,没有办法卸载任何东西.一旦它出现在你的系统上,你最好祈祷它没有做任何有趣的事情.因此,我真的不想依赖Python的安装程序包.
所以我转向Homebrew并使用Homebrew安装Python.工作令人难以置信.使用pip,Numpy,SciPy,Matplotlib也没有(大)问题.现在我想播放音频.那里有许多不同的软件包,但是pip似乎不愿意安装任何软件包.但是,有一个PyGame的二进制发行版,我想这应该与内置的Python一起使用.
因此我的问题是:你会做什么?您是否只需安装二进制发行版并希望它们能够很好地互操作并且永远不需要卸载?您是否会通过自己喜欢的软件包控制管理系统来解决问题?别的什么?
我有一个自定义NSWindowController子类,在初始化期间加载NIB文件,如下所示:
self = [super initWithNibNamed:@"myNib"];
if (self != nil) {
[self window];
}
Run Code Online (Sandbox Code Playgroud)
nib包含一些自定义视图和一些其他控件.这NSWindowController是文件的所有者,至少有一个视图甚至绑定它.
简单地说,关闭和释放该窗口我需要做什么?我花了一整天的时间试图解决这个问题,我仍然无能为力.
我有一个非常简单的颜色结构
struct {
unsigned char red;
unsigned char green;
unsigned char blue;
unsigned char alpha;
} RGBA;
Run Code Online (Sandbox Code Playgroud)
现在在某个函数中,我想返回这样的结构.
但我无法弄清楚如何做到这一点.我能想到的只是创建一个局部结构,分别填充每个字段,然后返回它.
RGBA localStructure;
localStructure.red = r;
localStructure.green = g;
localStructure.blue = b;
localStructure.alpha = a;
return localStructure;
Run Code Online (Sandbox Code Playgroud)
我真的想做这样的事情
return RGBA(r,g,b,a);
Run Code Online (Sandbox Code Playgroud)
有没有办法在C/C++中实现这一目标?
我有一个要终止的循环KeyboardInterrupt:
while True:
try:
do_stuff()
except KeyboardInterrupt:
cleanup()
break
except Exception as e:
cleanup()
raise e
Run Code Online (Sandbox Code Playgroud)
这很好用,但是双重cleanup()对我来说似乎很不干净。我不喜欢重复的代码。我尝试使用上下文管理器代替,但是这引入了很多不必要的复杂性,并使文件大小几乎增加了一倍。
有没有更清晰的方式表达我的意图?
简单来说就是
&someObject->someAttribute.someMember;
Run Code Online (Sandbox Code Playgroud)
相当于
&(someObject->someAttribute.someMember);
Run Code Online (Sandbox Code Playgroud)
要么
(&someObject)->someAttribute.someMember;
Run Code Online (Sandbox Code Playgroud)
要么
(&(someObject->someAttribute)).someMember;
Run Code Online (Sandbox Code Playgroud)
或者你真的应该在那里放置明确的括号以确保安全吗?
在我当前的项目中,编译器显示了数百个关于类型转换的警告.
有很多像这样的代码
iVar = fVar1*fVar2/fVar3;
// or even
iVar = fVar1*fVar2/fVar3+.5f;
Run Code Online (Sandbox Code Playgroud)
故意将float值分配给int.
当然,我可以使用修复这些警告
iVar = (int)(...);
Run Code Online (Sandbox Code Playgroud)
但那看起来很丑陋.
你宁愿生活在丑陋中还是与警告一起生活?
还是有一个干净的解决方案?
c++ ×4
c ×3
cocoa ×2
macos ×2
python ×2
struct ×2
audio ×1
bash ×1
core-audio ×1
linux ×1
list ×1
nib ×1
nsscrollview ×1
objective-c ×1
progress-bar ×1
pygame ×1
qt ×1
sorting ×1