2017-02-17 1 views
1

Je cherche une solution pour lire quelques informations sur mon affichage physique avant d'initialiser ma QApplication. Je travaille sur une machine Ubuntu avec Qt 5.8 et je veux obtenir des informations sur la taille en pouces de l'écran et la résolution de l'affichage. Des idées? Je vous remercie!Comment obtenir QScreen avant l'exécution de la QApplication

EDIT: Je allready Testet ceci:

  1. créer un QApplication
  2. lire le QScreen
  3. primaire quit et supprimer le faire QApplication
  4. trucs avec qscreen
  5. créer la application principale qui contient un QWebEngine < < crash

Problème avec cette solution est proche de l'initialisation de QtWebEngine. Il casse avec un défaut de segmentation à QWebEngineProfile::defaultProfile()

+1

Pouvez-vous expliquer * pourquoi * cela doit être fait avant d'initialiser votre instance de 'QApplication'? Cela ressemble à un problème X-Y, où la solution peut se trouver ailleurs. En outre, vous obtiendrez de meilleures réponses si vous [modifiez] votre question pour inclure un [mcve] qui démontre le problème. –

+0

Vous n'avez pas besoin de faire quelque chose comme ça. Créez le 'QApplication' et gardez-le jusqu'à ce que vous quittiez votre programme. C'est comme ça que ça doit être utilisé, et c'est le seul type d'utilisation qu'il supporte. Sinon, expliquez pourquoi vous pensez que vous devez passer par vos machinations proposées: le plus probable, il provient d'une sorte de malentendu. –

Répondre

2

QDesktopWidget peut être utilisé pour obtenir des informations d'écran.

You can't get screen information before QApplication was created in your application.

Pour contourner ce problème, vous pouvez créer un projet distinct pour petit utilitaire (il peut imprimer des paramètres de l'écran pour console ou de les écrire dans QSettings, par exemple), que vous lancer avant QApplication initialisation de votre application principale.

+0

Merci, l'approche avec les QSettings est bonne, une solution inline serait plus agréable mais au moins j'ai échoué –