2012-07-27 11 views
8

¿Cómo puedo cargar una hoja de estilo (recurso de estilo .qss) globalmente con Qt?Qt carga de hoja de estilo global?

que estoy tratando de hacer las cosas un poco más eficiente que:

middleIntText -> setStyleSheet("QLineEdit { border: 1px solid gray; 
           border-radius: 5px;padding: 0 8px; 
           selection-background-color:darkgray; 
           height:40px;font-size:15px;}"); 

pensé lo siguiente funcionaría en la carga QLineEdit la única vez para todos los widgets QLineEdit:

archivo qss:

QLineEdit {  border: 1px solid gray; 
       border-radius: 5px; 
       padding: 0 8px; 
       selection-background-color:darkgray; 
       height:40px; 
       font-size:15px;} 

cpp:

QApplication a(argc, argv); 
QFile stylesheet("formStyle.qss"); 
stylesheet.open(QFile::ReadOnly); 
QString setSheet = QLatin1String(stylesheet.readAll()); 
a.setStyleSheet(setSheet); 

Quizás esto es correcto y estoy haciendo algo más mal?

+0

He estado hablando con algunos muchachos en los foros [Qt Forums] (http://qt-project.org/forums/viewthread/19124/) y creo que puedo saber lo que tengo que hacer. Reporte mañana con una solución. Básicamente puede ser la ubicación del archivo de la sintaxis .qss, css o simplemente seleccionando el objeto correcto para que caiga en cascada (es decir, QMainWindow :: setStyleSheet (QString)). El método anterior debería funcionar una vez que calcule cuál de los tres. –

Respuesta

6

Ha llamado QStyle * QApplication::setStyle (const QString & style) que solicita un objeto QStyle para estilo de QStyleFactory.

En su lugar, debe llamar al void QApplication::setStyleSheet (const QString & sheet) que establece la hoja de estilos de la aplicación.

+0

Estás en lo correcto. Aunque esto no supone ningún cambio, he cambiado el código anterior para reflejar esta parte en la sintaxis correcta. Publiqué un comentario debajo de mi pregunta sobre las respuestas supuestas. Debería tener la respuesta real mañana. –

4

El intento anterior es la sintaxis correcta, pero hay razones por las que puede que no funcione.

problemas posibles:

  1. archivo de origen (.qss) no se recupera

  2. widget de la parte superior incorrecta ser elegido para aplicar en cascada.

  3. Sintaxis del código .qss (CSS).

Motivo que tuve que hacer mi pregunta anterior es que tuve dos de estos tres problemas. Primero tuve que señalar a los archivos la ubicación correcta y, en segundo lugar, tuve que enviar una solicitud directamente a QWidget.

QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss"); 
stylesheet.open(QFile::ReadOnly); 
QString setSheet = QLatin1String(stylesheet.readAll()); 
QWidget::setStyleSheet(setSheet); 

@Bill Gracias por su ayuda. Señaló que había publicado .setStyle y no .setStyleSheet. El código de ejemplo anterior ya no refleja esto, pero si no cambiara, nada de lo que hubiera hecho hubiera funcionado.

Cuestiones relacionadas