Попробуйте добавить каждую панель инструментов непосредственно в соответствующий виджет, используя QVBoxLayout
, как описано в Как встроить matplotlib в pyqt - для чайников .
Или, если вы все еще предпочитаете использовать область панели инструментов в QMainWindow
, вам необходимо подключить сигнал currentChanged
QTabWidget
к слоту, заменив панель инструментов на ту, которая соответствует виджету выбранного виджет.
Используйте javax.jnlp. ServiceManager для получения webstart сервиса. Если это - availabe, Вы работаете под Webstart.
См. http://download.java.net/jdk7/docs/jre/api/javaws/jnlp/index.html
У меня нет реального опыта с Java веб-запуск кроме рассмотрения его несколько лет назад.
Как насчет запускают Ваше приложение с параметром, который Вы определяете, чем Вы устанавливаете, когда приложение запускается через Java веб-запуск.
Если Вы хотите передать в аргументах Вашему приложению, необходимо добавить их к файлу запуска (иначе дескриптор JNLP) использование или элементы.
Затем проверьте, чтобы видеть, установлены ли эти свойства.
Снова это - предложение, которое я не кодировал для JWS, и это не может быть это легкое.
Поскольку Вы упомянули, проверив, что свойство System следующим образом является, вероятно, самым чистым путем:
private boolean isRunningJavaWebStart() {
return System.getProperty("javawebstart.version", null) != null;
}
В производственной системе я использовал вышеупомянутую технику в течение многих лет.
Можно также попытаться проверить, чтобы видеть, существуют ли какие-либо свойства, которые запускаются с "jnlpx". но ни один из тех, как действительно не "гарантируют", будет там любой насколько я знаю.
Альтернатива могла быть должна попытаться инстанцировать DownloadService нас предложенный Tom:
private boolean isRunningJavaWebStart() {
try {
DownloadService ds = (DownloadService) ServiceManager.lookup("javax.jnlp.DownloadService");
return ds != null;
} catch (UnavailableServiceException e) {
return false;
}
}
Конечно, это действительно имеет оборотную сторону связи Вашего кода к тому API.