Question

J'utilise QTabWidget, et je voudrais savoir si je peux utiliser des icônes pour les boutons de fermeture des onglets? Je pense que le style et setCornerWidget peut ne pas fonctionner dans ce cas.

Merci!

Était-ce utile?

La solution

Je ne pense pas que cela est possible avec un QTabWidget. Vous pouvez utiliser un QTabBar où vous pouvez utiliser QTabBar :: setTabButton pour définir un widget de votre propre conception dans la position de l'onglet.

Autres conseils

setStyleSheet () avec

 QTabBar::close-button {
     image: url(close.png)
 }
 QTabBar::close-button:hover {
     image: url(close-hover.png)
 }

http: //doc.qt. io / qt-4.8 / stylesheet-examples.html #-qtabwidget-personnalisation et qtabbar

Les boutons de proximité par défaut sur les onglets font partie du QStyle que vous utilisez.

A partir des sources Qt:

    case PE_IndicatorTabClose: {
        if (d->tabBarcloseButtonIcon.isNull()) {
            d->tabBarcloseButtonIcon.addPixmap(QPixmap(
                        QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-closetab-16.png")),
                        QIcon::Normal, QIcon::Off);
            d->tabBarcloseButtonIcon.addPixmap(QPixmap(
                        QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-closetab-down-16.png")),
                        QIcon::Normal, QIcon::On);
            d->tabBarcloseButtonIcon.addPixmap(QPixmap(
                        QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-closetab-hover-16.png")),
                        QIcon::Active, QIcon::Off);
        }

De quoi il ressemble, vous devez sous-classe QStyle et override PE_IndicatorTabClose et retourner un chemin de QIcon différent.

  #include <QProxyStyle>

        class AppStyle : public QProxyStyle
        {
            Q_OBJECT
        public:
            AppStyle(QStyle *style = 0) : QProxyStyle(style) {}

        void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
            {
                if (element == PE_IndicatorTabClose)
                {
                    int size = proxy()->pixelMetric(QStyle::PM_SmallIconSize);
                    QIcon::Mode mode = option->state & State_Enabled ?
                                (option->state & State_Raised ? QIcon::Active : QIcon::Normal)
                                : QIcon::Disabled;
                    if (!(option->state & State_Raised)
                        && !(option->state & State_Sunken)
                        && !(option->state & QStyle::State_Selected))
                        mode = QIcon::Disabled;

                    QIcon::State state = option->state & State_Sunken ? QIcon::On : QIcon::Off;
                    QPixmap pixmap = QIcon(":myclose.png").pixmap(size, mode, state);
                    proxy()->drawItemPixmap(painter, option->rect, Qt::AlignCenter, pixmap);
                }
                else
                {
                    QProxyStyle::drawPrimitive(element,option,painter,widget);
                }
            }
        };

dans main.cpp:

QApplication app(argc, argv);
app.setStyle(new AppStyle(app.style()));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top