Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Orfus от Июнь 26, 2012, 23:12



Название: [Решено] QTabBar margin below
Отправлено: Orfus от Июнь 26, 2012, 23:12
Собственно понадобилось добавить у QTabWidget кнопку справа от вкладок.
Решил делать свой TabWidget. Остановился на следующем моменте.
Между QTabBar и QFrame появился зазор (отмечен красным прямоугольником). Как убрать ума не приложу.
(http://rghost.ru/38891224/image.png)
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


Название: Re: QTabBar margin below
Отправлено: Kurles от Июнь 26, 2012, 23:36
Код
C++ (Qt)
mainLayout->setSpacing(0);
В конструкторе MyTabWidget?


Название: Re: QTabBar margin below
Отправлено: Orfus от Июнь 26, 2012, 23:38
Код
C++ (Qt)
mainLayout->setSpacing(0);
В конструкторе MyTabWidget?
работает) премного благодарен)