2

我正在创建一个 Cocoa NSWindow,其中(通过 IB)是 QTCaptureView、QTMovieView 和各种按钮和文本字段。

以编程方式,我做了以下事情:

创建了一个新的 QTMovie:

- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError
{
    QTMovie *movie = [QTMovie movieWithURL:url error:outError];
    if (movie){
        [self setMovie:movie];
    }
    return (movie != nil);
}

然后相应地设置 QTMovieView:

- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
    [super windowControllerDidLoadNib:aController];

    [movieView setShowsResizeIndicator:YES];
    [[movieView window] setShowsResizeIndicator:NO];    

    mainWindow = [aController window];
    [[mainWindow contentView] addSubview:movieView];
}

电影播放良好,我的网络摄像头被捕获并显示。我有两个似乎无法解决的问题;

  1. 我想根据 QTMovie 纵横比调整 QTMovieView 的大小。我有点在 IB 中执行此操作,但 QTMovieView 窗口的大小保持不变,只有电影以所需的大小播放。

  2. 我还想调整 QTMovieView 的大小并将其移动到 NSWindow 周围。

我在网上搜索并没有找到答案,所以很可能这不是无法完成的事情,而是我的代码有问题。

我一直在使用“QTKit 应用程序教程”文档。

[编辑 25/05/2012]

从第 28 页开始,它描述了如何将窗口大小调整为电影自然大小属性。我跟着这个,但主窗口调整了大小,而不是 QTMovieView 窗口。

[[movieView window] setContentSize:contentSize];

所以我猜我的理解是不正确的,QTMovieView 窗口是主窗口。QTMovieView 窗口所在的没有其他子窗口,只是我放置的那个!

[编辑 26/05/2012]

在 Cocoa 中只有一个窗口并且没有子窗口的概念!要允许拖动 QTMovieView,您必须让它接受鼠标事件。为此,您必须对其进行子类化并覆盖;

- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent

基本上阅读苹果的“处理鼠标事件”文档。

至于调整大小,我现在正在努力。

[结束编辑]

任何想法将不胜感激。谢谢。

4

0 回答 0