Qt инвертировать вкладку QTabWidget?

Я ищу инвертировать вкладки в Qt Designer.

То есть я ищу изменить вкладки из стандарта QTabWidget:

/ — tab1 — \ / — tab2 — \ ________________

в

\ — tab1 — / \ — tab2 — / ************************

Где эта вкладка входит в содержание, а не из него.

Есть ли для меня простой способ сделать это? Может быть, настройка Qtabwidget или какой-то способ отредактировать CSS, чтобы это произошло?

Спасибо

1

Решение

Эту задачу невозможно выполнить с помощью qss. Вам нужно создать собственный QTabBar и перезаписать метод paintEvent (). Другая проблема заключается в том, что метод setTabBar является закрытым, поэтому вам придется создать класс, наследующий от QTabWidget. , если вы хотите использовать этот класс в Qt Designer, вы должны продвигать его:

#ifndef TABWIDGET_H
#define TABWIDGET_H

#include <QStyleOptionTab>
#include <QStylePainter>
#include <QTabWidget>

class TabBar: public QTabBar
{
protected:
void paintEvent(QPaintEvent */*event*/){

QStylePainter painter(this);
QStyleOptionTab opt;

for(int i = 0;i < count();i++)
{
initStyleOption(&opt,i);

QPoint c = tabRect(i).center();
painter.translate(c);
painter.rotate(-180);
painter.translate(-c);
painter.drawControl(QStyle::CE_TabBarTabShape, opt);
painter.resetTransform();

painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
}
}
};

class TabWidget : public QTabWidget
{
public:
TabWidget(QWidget *parent=0):QTabWidget(parent){
setTabBar(new TabBar);
setTabShape(QTabWidget::Triangular);
}
};

#endif // TABWIDGET_H

Полный пример можно найти в следующем ссылка на сайт.

введите описание изображения здесь

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]