所以,我想在Mac上安装一个应用程序,通过我的iSight显示实时视频预览,同时允许用户拍摄快照。基本上,它类似于静止运动演示,除了现在我必须使它在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中的debuger所知,myPreviewBounds的大小为0x0,即使在setFrame和setBounds调用之后也是如此。只是为了证明camView是有效的,我确实设法改变了QTCaptureView的填充颜色。
我从消息来源读到,覆盖QTCaptureView的previewBounds可能是一个选项,但我找不到任何有用的例子。
如果有人能给我一个关于如何在Interface Builder之外和代码内调整QTCaptureView的提示,我将非常感激。