Qt hoja de estilo global de carga?
Frecuentes
Visto 7,124 equipos
8
¿Cómo puedo cargar una hoja de estilo (recurso de estilo .qss) globalmente con Qt?
Estoy tratando de hacer las cosas un poco más eficientes que:
middleIntText -> setStyleSheet("QLineEdit { border: 1px solid gray;
border-radius: 5px;padding: 0 8px;
selection-background-color:darkgray;
height:40px;font-size:15px;}");
Pensé que lo siguiente funcionaría para cargar QLineEdit una sola vez para todos los widgets de QLineEdit:
archivo qss:
QLineEdit { border: 1px solid gray;
border-radius: 5px;
padding: 0 8px;
selection-background-color:darkgray;
height:40px;
font-size:15px;}
archivo 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?
2 Respuestas
7
Usted llamó QStyle * QApplication::setStyle ( const QString y estilo ) que solicita un objeto QStyle para papa de QStyleFactory.
En cambio, deberías llamar void QApplication::setStyleSheet (const QString & sheet) que establece la hoja de estilo de la aplicación.
Respondido 03 Jul 13, 19:07
Estás en lo correcto. Aunque esto no cambia, he cambiado el código anterior para reflejar esta parte en la sintaxis correcta. Publiqué un comentario debajo de mi pregunta con respecto a las respuestas asumidas. Debería tener la respuesta real mañana. - brandon clark
4
El intento anterior es sintaxis correcta, pero hay razones por las que puede no funcionar.
Posibles problemas:
El archivo de origen (.qss) no se está recuperando
Se eligió el widget superior incorrecto para aplicar la cascada.
Sintaxis del código .qss (CSS).
La razón por la que tuve que hacer mi pregunta anterior es que tuve dos de estos tres problemas. Primero tuve que señalar la ubicación correcta de los archivos y segundo tuve que aplicar 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 muestra anterior ya no refleja esto, pero si no lo cambiara, nada de lo que hice hubiera funcionado.
Respondido 27 Jul 12, 16:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ qt qtstylesheets or haz tu propia pregunta.
He estado hablando con algunos chicos en el Foros Qt y creo que puedo saber lo que tengo que hacer. Informe mañana con una solución. Básicamente, puede ser la ubicación del archivo de .qss, la sintaxis css o simplemente elegir el objeto correcto para descender en cascada (es decir, QMainWindow::setStyleSheet(QString)). El método anterior debería funcionar una vez que descubra cuál de los tres. - Brandon Clark