因此,我希望在 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 的大小,我将非常感激。