Frage

Ich bin mit QTabWidget, und ich würde gerne wissen, ob ich verschiedene Symbole für die Schließen-Button auf Registerkarten verwenden kann? Ich denke, Stil und setCornerWidget möglicherweise nicht für diesen Fall.

Danke!

War es hilfreich?

Lösung

Ich glaube nicht, dass dies möglich ist mit einem QTabWidget. Sie könnten eine QTabBar verwenden, wo Sie QTabBar :: setTabButton zu setzen ein Widget von Ihrem eigenen Design in die Tab-Position verwenden können.

Andere Tipps

Verwenden Sie setStyleSheet () mit

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

http: //doc.qt. io / qt-4.8 / Sheet-examples.html # Customizing-qtabwidget-and-qtabbar

Der Standard-Schließen-Button auf Registerkarten ist Teil des QStyle Sie verwenden.

Von den Qt Quellen:

    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);
        }

Von dem, was es aussieht, haben Sie QStyle und Überschreibung PE_IndicatorTabClose und zurück einen anderen QIcon Pfad zu Unterklasse.

  #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);
                }
            }
        };

in main.cpp:

QApplication app(argc, argv);
app.setStyle(new AppStyle(app.style()));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top