Verschiedene Schließen-Button auf Registerkarten
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!
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()));