C++ 调整嵌入在Qt应用程序中的QTCaptureView的大小

C++ 调整嵌入在Qt应用程序中的QTCaptureView的大小,c++,cocoa,xcode,qt,qtkit,C++,Cocoa,Xcode,Qt,Qtkit,所以,我想在Mac上有一个应用程序,可以通过iSight显示实时视频预览,同时允许用户拍摄快照。基本上,它类似于静止运动演示,只是现在我必须让它在Qt应用程序下工作。也就是说,我有MM文件,它们大多是遵循C++结构,偶尔会有Obj-C消息传递。 目前,我在将QTCaptureView与Qt模块的其余部分一起放置时遇到问题 现在,我已经通过qmcoaviewcontainer将其放置到我的Qt-gui中,并希望将其调整到适当的大小;因为我们不能再使用界面生成器了,我不得不以某种方式编写它。在我创建

所以,我想在Mac上有一个应用程序,可以通过iSight显示实时视频预览,同时允许用户拍摄快照。基本上,它类似于静止运动演示,只是现在我必须让它在Qt应用程序下工作。也就是说,我有MM文件,它们大多是遵循C++结构,偶尔会有Obj-C消息传递。 目前,我在将QTCaptureView与Qt模块的其余部分一起放置时遇到问题

现在,我已经通过qmcoaviewcontainer将其放置到我的Qt-gui中,并希望将其调整到适当的大小;因为我们不能再使用界面生成器了,我不得不以某种方式编写它。在我创建它之后,我尝试设置它的框架和边界,但是没有任何区别

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中的调试程序可以看出,即使在setFrame和setBounds调用之后,我们的PreviewBounds的大小也是0x0。为了证明camView是有效的,我确实改变了QTCaptureView的填充颜色

我从资料中了解到,覆盖QTCaptureView的previewBounds可能是一种选择,但我还没有找到任何这样的工作示例


如果有人能告诉我如何在Interface Builder外部和代码内部调整QTCaptureView的大小,我将非常感激。

谢谢,这很有帮助。不幸的是,它没有解决问题。事实上,这是一个QmViewContainer问题;显然,包装在QTCaptureView中的是根据CCaptureViewWidget/qmAccocaViewContainer父级进行缩放的,因此我应该使用setGeometry来调整CCaptureViewWidget的大小。