tabwidget

This commit is contained in:
TurnMeOn
2017-11-02 13:37:17 +08:00
parent 17d571bf3a
commit f9da06bbcc
3 changed files with 53 additions and 42 deletions
+51
View File
@@ -1,2 +1,53 @@
#include "maintabstyle.h" #include "maintabstyle.h"
QSize MainTabStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
{
QSize tabsize = QProxyStyle::sizeFromContents(type, option, size, widget);
if (type == QStyle::CT_TabBarTab)
{
tabsize.transpose();
tabsize.rwidth() = 90; // 设置每个tabBar中item的大小
tabsize.rheight() = 44;//设置高度
}
return tabsize;
}
void MainTabStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == CE_TabBarTabLabel)
{//如果元件是TabBarTabLabel
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option))
{
QRect allRect = tab->rect;//获取tab矩形框
if (tab->state & QStyle::State_Selected)
{
painter->save();
painter->setPen(0x89cfff);//设置颜色
painter->setBrush(QBrush(0x89cfff));//设置Brush颜色
painter->drawRect(allRect.adjusted(6, 6, 6, -6));//这里调整高亮
painter->restore();//恢复
}
QTextOption option;//这里设置文本样式
option.setAlignment(Qt::AlignCenter);//设置对其方式。居中对齐
if (tab->state & QStyle::State_Selected)
{
painter->setPen(0xf8fcff);//设置颜色
}
else
{
painter->setPen(0x5d5d5d);
}
painter->drawText(allRect, tab->text, option);//绘制文本
return;
}
}
if (element == CE_TabBarTab)
{
QProxyStyle::drawControl(element, option, painter, widget);
}
}
+2 -41
View File
@@ -10,46 +10,7 @@ class MainTabStyle:public QProxyStyle
{ {
public: public:
QSize sizeFromContents(ContentsType type, const QStyleOption *option, QSize sizeFromContents(ContentsType type, const QStyleOption *option,
const QSize &size, const QWidget *widget) const const QSize &size, const QWidget *widget) const;
{ void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const;
QSize tabsize = QProxyStyle::sizeFromContents(type, option, size, widget);
if (type == QStyle::CT_TabBarTab) {
tabsize.transpose();
tabsize.rwidth() = 90; // 设置每个tabBar中item的大小
tabsize.rheight() = 44;//设置高度
}
return tabsize;
}
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == CE_TabBarTabLabel)
{//如果元件是TabBarTabLabel
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
QRect allRect = tab->rect;//获取tab矩形框
if (tab->state & QStyle::State_Selected) {
painter->save();
painter->setPen(0x89cfff);//设置颜色
painter->setBrush(QBrush(0x89cfff));//设置Brush颜色
painter->drawRect(allRect.adjusted(6, 6, 6, -6));//这里调整高亮
painter->restore();//恢复
}
QTextOption option;//这里设置文本样式
option.setAlignment(Qt::AlignCenter);//设置对其方式。居中对齐
if (tab->state & QStyle::State_Selected) {
painter->setPen(0xf8fcff);//设置颜色
}
else {
painter->setPen(0x5d5d5d);
}
painter->drawText(allRect, tab->text, option);//绘制文本
return;
}
}
if (element == CE_TabBarTab) {
QProxyStyle::drawControl(element, option, painter, widget);
}
}
}; };
#endif // MAINTABSTYLE_H #endif // MAINTABSTYLE_H
-1
View File
@@ -6,7 +6,6 @@
#include <QTabWidget> #include <QTabWidget>
#include <QLabel> #include <QLabel>
#include <QLayout> #include <QLayout>
#include <QFile>
namespace Ui { namespace Ui {
class Widget; class Widget;