繁体   English   中英

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

[英]Resizing a QTCaptureView embedded in a Qt app

因此,我想在Mac中使用一个应用程序,该应用程序将通过iSight显示实时视频预览,同时允许用户拍摄快照。 基本上,它类似于Still Motion演示,除了现在我必须使其在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中的调试器得知,即使setFrame和setBounds调用之后,ourPreviewBounds的大小也为0x0。 只是为了证明camView是有效的,我确实设法更改了QTCaptureView的填充颜色。

我从消息来源中了解到,可以重写QTCaptureView的PreviewBounds,但是我还没有找到任何可行的示例。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM