Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Puedo cambiar la posición del ícono Qmenu20170819 12:16

¿Puedo cambiar la posición del ícono Qmenu20170819 12:16

Ayer encontré un problema en el proyecto, es decir, cuando aparece QMenu, el ícono en el proyecto es demasiado pequeño y no se puede cambiar a través de la hoja de estilo. Resulta que el ícono predeterminado de QMenu tiene como máximo 16px * 16px. . Más tarde, busqué en línea y encontré la solución en QtCenter.org ------Consulte aquí

La publicación es muy simple y todos deberían poder entenderla. El objetivo principal aquí es permitir. todos recuerdan Vive para que no lo olvides.

Problema: QMenu usa QPlastiqueStyle, que usa QStyle::PM_SmallIconSize por defecto

Solución: Defina un nuevo estilo que herede de QPlastiqueStyle y reemplace QStyle::PM_SmallIconSize.

SmallIconSize

Código de muestra:

Entonces

Eso es todo, ¡pan comido!

ps: Cómo saber el estilo usado por defecto, puedes llamar al método metaObject ()-> className (), aún no lo he probado

Acerca del código :

/////////////////////////////////////////// ////// // ////////////

// Definición de icono grande de QMenu

///////// ///////// ////////////////////////////////////////// //

# ifndef CUSTOMICONSTYLE_ H

#define CUSTOMICONSTYLE_H

#include

clase CustomIconStyle: public QCommonStyle

{

Q_ OBJECT

público:

CustomIconStyle();

~CustomIconStyle();

void SetCustomSize(int);

//protected:

virtual int pixelMetric(PixelMetric métrica, const QStyleOption * opción, const QWidget * widget) const;

privado:

int mSize;

} ;

#endif // CUSTOMICONSTYLE_H

#include "CustomIconStyle.h"

CustomIconStyle:: CustomIconStyle()

{

mSize = 20;

}

CustomIconStyle:: ~CustomIconStyle()

{

}

void CustomIconStyle::SetCustomSize( int nSize )

{

mSize = nSize;

}

int CustomIconStyle::pixelMetric métrica, const QStyleOption * opción, const QWidget * widget ) const

{

int s = QCommonStyle::pixelMetric (métrica, opción, widget);

if (métrica == QStyle::PM_SmallIconSize) {

s = mSize;

}

return s ;

}

Método de llamada:

CustomIconStyle* pStyle = new CustomIconStyle;

mpMikeMenu->setStyle(pStyle);20170819 12:.50