Собственно понадобилось добавить у QTabWidget кнопку справа от вкладок.
Решил делать свой TabWidget. Остановился на следующем моменте.
Между QTabBar и QFrame появился зазор (отмечен красным прямоугольником). Как убрать ума не приложу.

MyTabWidget.h
C++ (Qt)
#ifndef MYTABWIDGET_H
#define MYTABWIDGET_H
#include "QtGui"
class MyTabWidget:public QWidget{
Q_OBJECT
public:
MyTabWidget(QWidget*parent=0);
QVBoxLayout *mainLayout;
QHBoxLayout *tabsLayout;
QPushButton *but;
QTabBar *tabs;
QFrame *content;
};
#endif // MYTABWIDGET_H
MyTabWidget.cpp
C++ (Qt)
#include "MyTabWidget.h"
MyTabWidget::MyTabWidget(QWidget *parent):QWidget(parent){
mainLayout= new QVBoxLayout(this);
tabsLayout = new QHBoxLayout();
but = new QPushButton("options",this);
tabs= new QTabBar(this);
content = new QFrame(this);
//
tabsLayout->addWidget( tabs );
tabsLayout->addWidget( but );
tabsLayout->setAlignment( tabs, Qt::AlignLeft );
tabsLayout->setAlignment( but, Qt::AlignRight );
//
mainLayout->addLayout(tabsLayout);
mainLayout->addWidget(content);
mainLayout->setMargin(0);
tabsLayout->setMargin(0);
this->setLayout(mainLayout);
this->setStyleSheet("\
QFrame {background:yellow; border:1px solid black;}\
QTabBar {background: lightblue; border: 1px solid black;}\
");
tabs->addTab("first");
tabs->addTab("second");
tabs->addTab("third");
}
main.cpp
C++ (Qt)
#include <QtGui>
#include "MyTabWidget.h"
int main(int argc, char**argv){
QApplication app(argc,argv);
QMainWindow *mw = new QMainWindow(0);
QHBoxLayout *lay= new QHBoxLayout();
MyTabWidget *mtw = new MyTabWidget(mw);
lay->addWidget(mtw);
QWidget *cw=new QWidget(mw);
cw->setLayout(lay);
lay->setMargin(0);
mw->setCentralWidget(cw);
mw->setMinimumWidth(400);
mw->setMinimumHeight(400);
mw->show();
app.exec();
}
пробовал ставить eventFilter и по клику смотреть что там, утверждало, что MyTabWidget. Кто нибудь знает как можно зазор вылечить?

p.s. qt 4.8.1 win7