0

因此,我希望在 Mac 中拥有一个应用程序,它可以通过我的 iSight 显示实时视频预览,同时允许用户拍摄快照。基本上,它类似于 Still Motion Demo,除了现在我必须让它在 Qt 应用程序下工作。也就是说,我的 mm 文件大多遵循 c++ 结构,偶尔带有 Obj-c 消息传递。目前,我在将 QTCaptureView 与 Qt 模块的其余部分放在一起时遇到问题。

现在,我已经设法通过 QMacCocoaViewContainer 将它放入我的 Qt gui,并希望将其调整为合适的大小;由于我们不能再使用 Interface Builder,我必须以某种方式对其进行编码。我已经尝试在创建它之后立即设置它的框架和边界,但这没有任何区别。

CCaptureViewWidget::CCaptureViewWidget(QWidget *parent) :
    QMacCocoaViewContainer(0, parent)
{
    NSAutoreleasePool *pool   = [[NSAutoreleasePool alloc] init];

    NSRect kVideoFrame = NSMakeRect( 100.0f, 100.0f, 400.0f, 300.0f );
    QTCaptureView *camView = [[QTCaptureView alloc] initWithFrame:kVideoFrame];    
    [camView setFrame:kVideoFrame];
    [camView setBounds:kVideoFrame];

    NSRect ourPreviewBounds = [ camView previewBounds ];

    NSColor *pFillColor = [ [NSColor colorWithDeviceRed:0.0f green:1.0f blue:0.0f alpha:1.0f] copy];
    [camView setFillColor:pFillColor];

    [camView setPreservesAspectRatio:YES];
    [camView setNeedsDisplay:YES];

    setCocoaView( camView );

    [camView release];
    [pool   release];

}

根据我从 Xcode 中的调试器中可以看出,ourPreviewBounds 的大小为 0x0,即使在 setFrame 和 setBounds 调用之后也是如此。为了证明 camView 是有效的,我确实设法改变了 QTCaptureView 的填充颜色。

我从源代码中读到覆盖 QTCaptureView 的 previewBounds 可能是一种选择,但我无法找到任何可行的示例。

如果有人可以提示我如何在 Interface Builder 之外和代码内部调整 QTCaptureView 的大小,我将非常感激。

4

1 回答 1

0

如何以编程方式设置 NSView 大小?

于 2011-04-26T15:26:29.877 回答