signals : void currentChange(int);
public function : int addTab(const char*);
void setTabText(int, const char*);
tabwidget.h
View Code
/*
* Filename: tabwidget.h
* Created: 2011年06月14日 14时03分27秒
* Author: Eesher (E)
*/
#ifndef TABWIDGET_H
#define TABWIDGET_H
#include < QtGui >
#include < QObject >
class TabWidget : public QWidget
{
Q_OBJECT
public :
TabWidget(QWidget * parent = 0 );
int addTab( const char * );
void setTabText( int , const char * );
private :
QColor m_fontColor;
QColor m_barColor;
QColor m_tabColor;
int m_index;
QSize m_tabsize;
QList < const char *> m_tabs;
signals:
void currentChange( int );
protected :
void paintEvent(QPaintEvent * );
void mousePressEvent(QMouseEvent * );
};
#endif
* Filename: tabwidget.h
* Created: 2011年06月14日 14时03分27秒
* Author: Eesher (E)
*/
#ifndef TABWIDGET_H
#define TABWIDGET_H
#include < QtGui >
#include < QObject >
class TabWidget : public QWidget
{
Q_OBJECT
public :
TabWidget(QWidget * parent = 0 );
int addTab( const char * );
void setTabText( int , const char * );
private :
QColor m_fontColor;
QColor m_barColor;
QColor m_tabColor;
int m_index;
QSize m_tabsize;
QList < const char *> m_tabs;
signals:
void currentChange( int );
protected :
void paintEvent(QPaintEvent * );
void mousePressEvent(QMouseEvent * );
};
#endif
tabwidget.cpp
View Code
/*
* Filename: tabwidget.cpp
* Created: 2011年06月14日 14时02分17秒
* Author: Eesher (E)
*/
#include " tabwidget.h "
TabWidget::TabWidget(QWidget * parent)
: QWidget(parent)
{
setMinimumHeight( 40 );
m_fontColor = QColor( 69 , 78 , 85 );
m_barColor = QColor( 166 , 186 , 201 );
m_tabColor = QColor( 216 , 227 , 235 );
m_index = 0 ;
m_tabsize = QSize( 60 , 40 );
m_tabs.append( " tab1 " );
m_tabs.append( " tab2 " );
}
void TabWidget::paintEvent(QPaintEvent * )
{
QPainter painter( this );
// QRect bar_rect = rect();
painter.setBrush(Qt::NoBrush);
QRect bar_rect( 0 , 5 , m_tabsize.width() * m_tabs.count(), m_tabsize.height());
painter.setPen(QPen(QBrush(m_barColor), 0.01 ));
painter.setBrush(QBrush(m_barColor));
painter.drawRect(bar_rect);
QRect active_rect(QPoint(m_tabsize.width() * m_index, 0 ), m_tabsize);
painter.setPen(QPen(QBrush(m_tabColor), 0.01 ));
painter.setBrush(QBrush(m_tabColor));
painter.drawRect(active_rect);
QTextCodec * codec = QTextCodec::codecForName( " UTF-8 " );
QRect button_rect(QPoint( 0 , 0 ), m_tabsize);
painter.setPen(QPen(QBrush(m_fontColor), 0 ));
painter.setFont(font());
for ( int i = 0 ; i < m_tabs.count(); i ++ )
painter.drawText(m_tabsize.width() * i, 0 , button_rect.width(), button_rect.height(), Qt::AlignCenter, codec -> toUnicode(m_tabs.at(i)));
}
void TabWidget::mousePressEvent(QMouseEvent * e)
{
int x = e -> x();
int i = x / m_tabsize.width();
if (i > m_tabs.count() - 1 )
return ;
m_index = i;
emit currentChange(m_index);
update();
}
int TabWidget::addTab( const char * text)
{
m_tabs << text;
return m_tabs.count() - 1 ;
}
void TabWidget::setTabText( int index, const char * text)
{
m_tabs.replace(index, text);
}
* Filename: tabwidget.cpp
* Created: 2011年06月14日 14时02分17秒
* Author: Eesher (E)
*/
#include " tabwidget.h "
TabWidget::TabWidget(QWidget * parent)
: QWidget(parent)
{
setMinimumHeight( 40 );
m_fontColor = QColor( 69 , 78 , 85 );
m_barColor = QColor( 166 , 186 , 201 );
m_tabColor = QColor( 216 , 227 , 235 );
m_index = 0 ;
m_tabsize = QSize( 60 , 40 );
m_tabs.append( " tab1 " );
m_tabs.append( " tab2 " );
}
void TabWidget::paintEvent(QPaintEvent * )
{
QPainter painter( this );
// QRect bar_rect = rect();
painter.setBrush(Qt::NoBrush);
QRect bar_rect( 0 , 5 , m_tabsize.width() * m_tabs.count(), m_tabsize.height());
painter.setPen(QPen(QBrush(m_barColor), 0.01 ));
painter.setBrush(QBrush(m_barColor));
painter.drawRect(bar_rect);
QRect active_rect(QPoint(m_tabsize.width() * m_index, 0 ), m_tabsize);
painter.setPen(QPen(QBrush(m_tabColor), 0.01 ));
painter.setBrush(QBrush(m_tabColor));
painter.drawRect(active_rect);
QTextCodec * codec = QTextCodec::codecForName( " UTF-8 " );
QRect button_rect(QPoint( 0 , 0 ), m_tabsize);
painter.setPen(QPen(QBrush(m_fontColor), 0 ));
painter.setFont(font());
for ( int i = 0 ; i < m_tabs.count(); i ++ )
painter.drawText(m_tabsize.width() * i, 0 , button_rect.width(), button_rect.height(), Qt::AlignCenter, codec -> toUnicode(m_tabs.at(i)));
}
void TabWidget::mousePressEvent(QMouseEvent * e)
{
int x = e -> x();
int i = x / m_tabsize.width();
if (i > m_tabs.count() - 1 )
return ;
m_index = i;
emit currentChange(m_index);
update();
}
int TabWidget::addTab( const char * text)
{
m_tabs << text;
return m_tabs.count() - 1 ;
}
void TabWidget::setTabText( int index, const char * text)
{
m_tabs.replace(index, text);
}