Thiago Macieira wrote:
This seems more appropriate for the Development ML so I'm taking it there.
> On Friday 04 September 2015 12:19:24 René J.V. Bertin wrote:
>> A bit of testing confirms that QT_PLUGIN_PATH is involved, but on my OS X
>> machine the style plugin is already in the plugin path, so something else
>> must be required to make it the default style.
>
> It's another type of plugin called "platformthemes". It's provided
> specifically for platforms that are written with Qt because of a dependency
> reversal: Qt itself cannot integrate with it from inside the platform plugin
> as it hasn't been built yet.
>
It turns out to be straightforward to include qgenericunixthemes.cpp in an OS X
build, and to invoke it:
QPlatformTheme *QCocoaIntegration::createPlatformTheme(const QString &name)
const
{
qDebug() << "QCocoaIntegration::createPlatformTheme(" << name << ")";
if (name == QLatin1String(QCocoaTheme::name)) {
qDebug() << "returning the QCocoaTheme";
return new QCocoaTheme;
}
// createUnixTheme() is patched to return NULL as the fallback case on OS X
QPlatformTheme *unixTheme = QGenericUnixTheme::createUnixTheme(name);
if (unixTheme) {
qDebug() << "returning" << unixTheme;
return unixTheme;
}
else {
qDebug() << "returning QPlatformIntegration::createPlatformTheme(" <<
name << ")";
return QPlatformIntegration::createPlatformTheme(name);
}
}
and I can indeed use `foo --style=kde` to start foo using the currently
selected
style for KDE applications. However:
1- simply setting KDEHOME to ~/.kde doesn't have any effect (it's not required
for --style=kde to work either)
2- apparently, QCocoaIntegration::createPlatformTheme() is always called with
name=="cocoa".
I'll be looking at the call stack to see how
QCocoaIntegration::createPlatformTheme() and
QXcbIntegration::createPlatformTheme() get called, but would appreciate
pointers.
For the record: I think Qt loads the KDE style on Linux in order for pure Qt
apps to integrate nicely with KDE (KF5) apps. It'd be nice if this were
possible
(optional, user choice) on OS X too (as is the case with Qt4/KDE4 apps) once
KF5
becomes operational.
R.
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development