Russian Qt Forum
Сентябрь 30, 2024, 14:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] QTabBar margin below  (Прочитано 2277 раз)
Orfus
Гость
« : Июнь 26, 2012, 23:12 »

Собственно понадобилось добавить у 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
« Последнее редактирование: Июнь 26, 2012, 23:38 от Orfus » Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Июнь 26, 2012, 23:36 »

Код
C++ (Qt)
mainLayout->setSpacing(0);
В конструкторе MyTabWidget?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Orfus
Гость
« Ответ #2 : Июнь 26, 2012, 23:38 »

Код
C++ (Qt)
mainLayout->setSpacing(0);
В конструкторе MyTabWidget?
работает) премного благодарен)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.331 секунд. Запросов: 23.