/** * Constructor */ PsiTabWidget::PsiTabWidget(QWidget *parent) : QWidget(parent) { tabsPosition_ = QTabWidget::East; // impossible => uninitialised state tabBar_ = new PsiTabBar(this); tabBar_->setUsesScrollButtons(true); layout_ = new QVBoxLayout(this); layout_->setMargin(0); layout_->setSpacing(0); barLayout_ = new QHBoxLayout; layout_->addLayout(barLayout_); barLayout_->setMargin(0); barLayout_->setSpacing(0); barLayout_->addWidget(tabBar_, 2); barLayout_->setAlignment(Qt::AlignLeft); int buttonwidth = qMax(tabBar_->style()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, 0, tabBar_), QApplication::globalStrut().width()); downButton_ = new QToolButton(this); downButton_->setMinimumSize(3,3); downButton_->setFixedWidth(buttonwidth); downButton_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); menu_ = new QMenu(this); downButton_->setMenu(menu_); downButton_->setStyleSheet(" QToolButton::menu-indicator { image:none } "); connect(menu_, SIGNAL(aboutToShow()), SLOT(menu_aboutToShow())); connect(menu_, SIGNAL(triggered(QAction*)), SLOT(menu_triggered(QAction*))); barLayout_->addWidget(downButton_); closeButton_ = new QToolButton(this); closeButton_->setMinimumSize(3,3); closeButton_->setFixedWidth(buttonwidth); closeButton_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); barLayout_->addWidget(closeButton_); closeButton_->setText("x"); downButton_->setArrowType(Qt::DownArrow); downButton_->setPopupMode(QToolButton::InstantPopup); stacked_ = new QStackedLayout(layout_); setTabPosition(QTabWidget::North); connect( tabBar_, SIGNAL(mouseDoubleClickTab(int)), SLOT(mouseDoubleClickTab(int))); connect( tabBar_, SIGNAL(mouseMiddleClickTab(int)), SLOT(mouseMiddleClickTab(int))); connect( tabBar_, SIGNAL( currentChanged(int)), SLOT(tab_currentChanged(int))); connect( tabBar_, SIGNAL( contextMenu(QContextMenuEvent*,int)), SLOT( tab_contextMenu(QContextMenuEvent*,int))); connect( closeButton_, SIGNAL(clicked()), SIGNAL(closeButtonClicked())); }
/** * Constructor */ PsiTabWidget::PsiTabWidget(QWidget *parent) : QWidget(parent) { tabsPosition_ = QTabWidget::East; // impossible => uninitialised state tabBar_ = new PsiTabBar(this); bool multiRow = PsiOptions::instance()->getOption("options.ui.tabs.multi-rows", true).toBool(); tabBar_->setMultiRow(multiRow); tabBar_->setUsesScrollButtons(!multiRow); layout_ = new QVBoxLayout(this); layout_->setMargin(0); layout_->setSpacing(0); barLayout_ = new QHBoxLayout; layout_->addLayout(barLayout_); barLayout_->setMargin(0); barLayout_->setSpacing(0); barLayout_->addWidget(tabBar_, 2); barLayout_->setAlignment(Qt::AlignLeft); int buttonwidth = qMax(tabBar_->style()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, 0, tabBar_), QApplication::globalStrut().width()); downButton_ = new QToolButton(this); downButton_->setMinimumSize(3,3); downButton_->setFixedWidth(buttonwidth); downButton_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); menu_ = new QMenu(this); downButton_->setMenu(menu_); downButton_->setStyleSheet(" QToolButton::menu-indicator { image:none } "); connect(menu_, SIGNAL(aboutToShow()), SLOT(menu_aboutToShow())); connect(menu_, SIGNAL(triggered(QAction*)), SLOT(menu_triggered(QAction*))); barLayout_->addWidget(downButton_); barLayout_->setAlignment(downButton_, Qt::AlignBottom); closeButton_ = new QToolButton(this); closeButton_->setMinimumSize(3,3); closeButton_->setFixedWidth(buttonwidth); closeButton_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); barLayout_->addWidget(closeButton_); barLayout_->setAlignment(closeButton_, Qt::AlignBottom); closeButton_->setText("x"); downButton_->setArrowType(Qt::DownArrow); downButton_->setPopupMode(QToolButton::InstantPopup); stacked_ = new QStackedLayout(layout_); setTabPosition(QTabWidget::North); setLooks(); if (!PsiOptions::instance()->getOption("options.ui.tabs.show-tab-buttons").toBool()) { closeButton_->hide(); downButton_->hide(); } #if QT_VERSION >= 0x040500 if (!PsiOptions::instance()->getOption("options.ui.tabs.show-tab-close-buttons").toBool()) { tabBar_->setTabsClosable(false); } #endif connect( tabBar_, SIGNAL(mouseDoubleClickTab(int)), SLOT(mouseDoubleClickTab(int))); connect( tabBar_, SIGNAL(mouseMiddleClickTab(int)), SLOT(mouseMiddleClickTab(int))); connect( tabBar_, SIGNAL( currentChanged(int)), SLOT(tab_currentChanged(int))); connect( tabBar_, SIGNAL( contextMenu(QContextMenuEvent*,int)), SLOT( tab_contextMenu(QContextMenuEvent*,int))); connect( closeButton_, SIGNAL(clicked()), SIGNAL(closeButtonClicked())); connect(tabBar_, SIGNAL(tabMoved(int,int)),SLOT(widgetMoved(int,int))); connect(tabBar_, SIGNAL(tabCloseRequested(int)),SIGNAL(tabCloseRequested(int))); }