diff options
author | Lauro Neto <lauro.neto@openbossa.org> | 2010-04-27 18:12:50 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-04-28 16:36:47 -0300 |
commit | aaece960d3cf1c9d19dd84fe8171769517647724 (patch) | |
tree | ea2e20d2c8738cc407f60b10b6cccfb4e1fc2b70 /doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm | |
parent | 685246809debe672a0007b67fe78f7c77bad6739 (diff) |
Adding ./doc from boost
Reviewer: Lauro Moura <lauro.neto@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm')
-rw-r--r-- | doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm b/doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm new file mode 100644 index 000000000..66c6fbfd6 --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm @@ -0,0 +1,94 @@ +#include <QtGui/QtGui> +#include <QtGui/qmacnativewidget_mac.h> +#ifdef QT_MAC_USE_COCOA +#import <Cocoa/Cocoa.h> +#else +#include <Carbon/Carbon.h> +#endif + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); +#ifdef QT_MAC_USE_COCOA +//![0] + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(200, app.desktop()->height() - 200, 239, 200) + styleMask:NSTitledWindowMask | NSClosableWindowMask + | NSMiniaturizableWindowMask | NSResizableWindowMask + backing:NSBackingStoreBuffered defer:NO]; + + QMacNativeWidget *nativeWidget = new QMacNativeWidget(); + nativeWidget->move(0, 0); + nativeWidget->setPalette(QPalette(Qt::red)); + nativeWidget->setAutoFillBackground(true); + QVBoxLayout *layout = new QVBoxLayout(); + QPushButton *pushButton = new QPushButton("An Embedded Qt Button!", nativeWidget); + pushButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // Don't use the layout rect calculated from QMacStyle. + layout->addWidget(pushButton); + nativeWidget->setLayout(layout); + + // Adjust Cocoa layouts + NSView *nativeWidgetView = reinterpret_cast<NSView *>(nativeWidget->winId()); + NSView *contentView = [window contentView]; + [contentView setAutoresizesSubviews:YES]; + [nativeWidgetView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; + [nativeWidgetView setAutoresizesSubviews:YES]; + NSView *pushButtonView = reinterpret_cast<NSView *>(pushButton->winId()); + [pushButtonView setAutoresizingMask:NSViewWidthSizable]; + + // Add the nativeWidget to the window. + [contentView addSubview:nativeWidgetView positioned:NSWindowAbove relativeTo:nil]; + nativeWidget->show(); + pushButton->show(); + + // Show the window. + [window makeKeyAndOrderFront:window]; + [pool release]; +//![0] +#else +//![1] + Rect contentRect; + SetRect(&contentRect, 200, 200, 400, 400); + HIWindowRef windowRef; + CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes | kWindowCompositingAttribute | kWindowStandardHandlerAttribute | kWindowLiveResizeAttribute, &contentRect, &windowRef); + HIViewRef contentView = 0; + GetRootControl(windowRef, &contentView); + + QMacNativeWidget *nativeWidget = new QMacNativeWidget(); + nativeWidget->move(0, 0); + nativeWidget->setPalette(QPalette(Qt::red)); + nativeWidget->setAutoFillBackground(true); + QVBoxLayout *layout = new QVBoxLayout(); + QPushButton *pushButton = new QPushButton("An Embedded Qt Button!", nativeWidget); + pushButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // Don't use the layout rect calculated from QMacStyle. + layout->addWidget(pushButton); + nativeWidget->setLayout(layout); + HIViewRef nativeWidgetView = reinterpret_cast<HIViewRef>(nativeWidget->winId()); + // Add the nativeWidget to the window. + HIViewAddSubview(contentView, nativeWidgetView); + + // Adjust Carbon layouts + HILayoutInfo layoutInfo; + layoutInfo.version = kHILayoutInfoVersionZero; + HIViewGetLayoutInfo(nativeWidgetView, &layoutInfo); + + layoutInfo.binding.top.toView = contentView; + layoutInfo.binding.top.kind = kHILayoutBindTop; + layoutInfo.binding.left.toView = contentView; + layoutInfo.binding.left.kind = kHILayoutBindLeft; + layoutInfo.binding.right.toView = contentView; + layoutInfo.binding.right.kind = kHILayoutBindRight; + layoutInfo.binding.bottom.toView = contentView; + layoutInfo.binding.bottom.kind = kHILayoutBindBottom; + + HIViewSetLayoutInfo(nativeWidgetView, &layoutInfo); + HIViewApplyLayout(nativeWidgetView); + + pushButton->show(); + nativeWidget->show(); + // Show the window. + ShowWindow(windowRef); +//![1] +#endif + return app.exec(); // gives us the same behavior in both +} |