本文整理汇总了C++中QWindow::handle方法的典型用法代码示例。如果您正苦于以下问题:C++ QWindow::handle方法的具体用法?C++ QWindow::handle怎么用?C++ QWindow::handle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWindow
的用法示例。
在下文中一共展示了QWindow::handle方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setSurface
void QRenderAspectPrivate::setSurface(QSurface *surface)
{
if (m_surface == surface)
return;
m_surface = surface;
// If we have a new surface, install the platform surface event filter onto it
// so that we get informed when the underlying platform surface is about to be
// deleted and we can tell the renderer about it before it's too late.
if (m_surface) {
bool hasPlatformSurface = false;
switch (m_surface->surfaceClass()) {
case QSurface::Window: {
QWindow *window = static_cast<QWindow *>(m_surface);
m_surfaceEventFilter->setWindow(window);
hasPlatformSurface = (window->handle() != Q_NULLPTR);
break;
}
case QSurface::Offscreen: {
QOffscreenSurface *offscreen = static_cast<QOffscreenSurface *>(m_surface);
m_surfaceEventFilter->setOffscreenSurface(offscreen);
hasPlatformSurface = (offscreen->handle() != Q_NULLPTR);
break;
}
}
// If the window/offscreen surface has a native surface, tell the renderer
if (hasPlatformSurface)
m_renderer->setSurface(surface);
}
}
示例2: setFocusObject
void QWaylandInputContext::setFocusObject(QObject *object)
{
if (!ensureTextInput())
return;
if (!object) {
mTextInput->deactivate(mDisplay->defaultInputDevice()->wl_seat());
return;
}
QWindow *window = QGuiApplication::focusWindow();
if (!window || !window->handle())
return;
struct ::wl_surface *surface = static_cast<QWaylandWindow *>(window->handle())->object();
mTextInput->activate(mDisplay->defaultInputDevice()->wl_seat(), surface);
}
示例3:
static QWidget *QWidgetForHWND(HWND hwnd) {
#if QT_VERSION >= 0x050000
QList<QWidget *> windows = qApp->topLevelWidgets();
foreach (QWidget *w, windows) {
QWindow *window = w->windowHandle();
if (window == NULL || window->handle() == 0) {
continue;
}
HWND whwnd = static_cast<HWND>(qApp->platformNativeInterface()->nativeResourceForWindow("handle", window));
if (whwnd == hwnd) {
return w;
}
}
示例4: mapFromGlobal
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
{
int x = pos.x(), y = pos.y();
const QWidget *w = this;
while (w) {
QWindow *window = w->windowHandle();
if (window && window->handle())
return window->mapFromGlobal(QPoint(x, y));
x -= w->data->crect.x();
y -= w->data->crect.y();
w = w->isWindow() ? 0 : w->parentWidget();
}
return QPoint(x, y);
}
示例5: MumbleHWNDForQWidget
HWND MumbleHWNDForQWidget(QWidget *widget) {
#if QT_VERSION >= 0x050000
QWindow *window = widget->windowHandle();
if (window == NULL) {
QWidget *npw = widget->nativeParentWidget();
if (npw != NULL) {
window = npw->windowHandle();
}
}
if (window != NULL && window->handle() != 0) {
return static_cast<HWND>(qApp->platformNativeInterface()->nativeResourceForWindow("handle", window));
}
return 0;
#else
return widget->winId();
#endif
}
示例6: notifyAccessibilityUpdate
void QWindowsAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event)
{
QString soundName;
switch (event->type()) {
case QAccessible::PopupMenuStart:
soundName = QLatin1String("MenuPopup");
break;
case QAccessible::MenuCommand:
soundName = QLatin1String("MenuCommand");
break;
case QAccessible::Alert:
soundName = event->object()->inherits("QMessageBox") ?
messageBoxAlertSound(event->object()) : QStringLiteral("SystemAsterisk");
break;
default:
break;
}
if (!soundName.isEmpty()) {
#ifndef QT_NO_SETTINGS
QSettings settings(QLatin1String("HKEY_CURRENT_USER\\AppEvents\\Schemes\\Apps\\.Default\\") + soundName,
QSettings::NativeFormat);
QString file = settings.value(QLatin1String(".Current/.")).toString();
#else
QString file;
#endif
if (!file.isEmpty()) {
PlaySound(reinterpret_cast<const wchar_t *>(soundName.utf16()), 0, SND_ALIAS | SND_ASYNC | SND_NODEFAULT | SND_NOWAIT);
}
}
#if defined(Q_OS_WINCE) // ### TODO: check for NotifyWinEvent in CE 6.0
// There is no user32.lib nor NotifyWinEvent for CE
return;
#else
// An event has to be associated with a window,
// so find the first parent that is a widget and that has a WId
QAccessibleInterface *iface = event->accessibleInterface();
if (!isActive() || !iface || !iface->isValid())
return;
QWindow *window = QWindowsAccessibility::windowHelper(iface);
if (!window) {
window = QGuiApplication::focusWindow();
if (!window)
return;
}
QPlatformNativeInterface *platform = QGuiApplication::platformNativeInterface();
if (!window->handle()) // Called before show(), no native window yet.
return;
HWND hWnd = (HWND)platform->nativeResourceForWindow("handle", window);
if (event->type() != QAccessible::MenuCommand && // MenuCommand is faked
event->type() != QAccessible::ObjectDestroyed) {
::NotifyWinEvent(event->type(), hWnd, OBJID_CLIENT, QAccessible::uniqueId(iface));
}
#endif // Q_OS_WINCE
}
示例7: create_sys
void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyOldWindow)
{
Q_Q(QWidget);
Q_UNUSED(window);
Q_UNUSED(initializeWindow);
Q_UNUSED(destroyOldWindow);
Qt::WindowFlags flags = data.window_flags;
if (!q->testAttribute(Qt::WA_NativeWindow) && !q->isWindow())
return; // we only care about real toplevels
QWindow *win = topData()->window;
// topData() ensures the extra is created but does not ensure 'window' is non-null
// in case the extra was already valid.
if (!win) {
createTLSysExtra();
win = topData()->window;
}
win->setFlags(data.window_flags);
fixPosIncludesFrame();
if (q->testAttribute(Qt::WA_Moved))
win->setGeometry(q->geometry());
else
win->resize(q->size());
win->setScreen(QGuiApplication::screens().value(topData()->screenIndex, 0));
if (q->testAttribute(Qt::WA_TranslucentBackground)) {
QSurfaceFormat format;
format.setAlphaBufferSize(8);
win->setFormat(format);
}
if (QWidget *nativeParent = q->nativeParentWidget()) {
if (nativeParent->windowHandle()) {
if (flags & Qt::Window) {
win->setTransientParent(nativeParent->windowHandle());
win->setParent(0);
} else {
win->setTransientParent(0);
win->setParent(nativeParent->windowHandle());
}
}
}
qt_window_private(win)->positionPolicy = topData()->posIncludesFrame ?
QWindowPrivate::WindowFrameInclusive : QWindowPrivate::WindowFrameExclusive;
win->create();
// Enable nonclient-area events for QDockWidget and other NonClientArea-mouse event processing.
if ((flags & Qt::Desktop) == Qt::Window)
win->handle()->setFrameStrutEventsEnabled(true);
data.window_flags = win->flags();
QBackingStore *store = q->backingStore();
if (!store) {
if (win && q->windowType() != Qt::Desktop)
q->setBackingStore(new QBackingStore(win));
else
q->setAttribute(Qt::WA_PaintOnScreen, true);
}
setWindowModified_helper();
setWinId(win->winId());
// Check children and create windows for them if necessary
q_createNativeChildrenAndSetParent(q);
if (extra && !extra->mask.isEmpty())
setMask_sys(extra->mask);
// If widget is already shown, set window visible, too
if (q->isVisible())
win->setVisible(true);
}