LINUX.ORG.RU

Проблема с отображением табов у QTabWidget

 ,


0

1

В общем решил добавить табам RichText по средствам label но почему-то табы не отображаются. Текст с них читается - т.е. все должно работать, но на QTabWidget просто маленькие пустые табы без текста, может что я еще забыл переопределить?
Код:

//RichTextTabBar.h

class RichTextTabBar : public QTabBar
{
        Q_OBJECT
public:
    void setTabText(int index, const QString& text);
    QString tabText(int index) const;

private:
    int mTabWidth;
    int mTabHeight;
};

//RichTextTabBar.cpp

#include "richtexttabbar.h"

#include <QLabel>

void RichTextTabBar::setTabText(int index, const QString &text)
{
    QLabel* label = new QLabel(text);
    label->setFixedSize(mTabWidth, mTabHeight);
    label->setStyleSheet("padding-top:0px; padding-bottom:0px; padding-left:5px; padding-right:5px;");
    setTabButton(index, QTabBar::LeftSide, label);
}

QString RichTextTabBar::tabText(int index) const
{
    return static_cast<QLabel*>(tabButton(index, QTabBar::LeftSide))->text();
}

//RichTextTabWidget.h

#include <QTabWidget>

#include "richtexttabbar.h"

class RichTextTabWidget : public QTabWidget
{
    Q_OBJECT
public:
    RichTextTabWidget(QWidget* parent = 0);

    void setTabText(int index, const QString &label);
    QString tabText(int index) const;


protected:
    RichTextTabBar *tabBar() const;
};
//RichTextTabWidget.cpp

#include "richtexttabwidget.h"

RichTextTabWidget::RichTextTabWidget(QWidget *parent) :
    QTabWidget(parent)
{
    setTabBar(new RichTextTabBar());
}


void RichTextTabWidget::setTabText(int index, const QString &label)
{
    tabBar()->setTabText(index, label);
}

QString RichTextTabWidget::tabText(int index) const
{
    return tabBar()->tabText(index);
}

RichTextTabBar *RichTextTabWidget::tabBar() const
{
    return static_cast<RichTextTabBar*>(QTabWidget::tabBar());
}

★★★★★

код не читал, но

на QTabWidget просто маленькие пустые табы

потеряны лейауты, покопайся

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Хм, а куда его добавлять то? Вроде никаких Layout'ов не надо было прописывать...

deterok ★★★★★ ()

нужно действовать примерно вот таким порядком:

QLabel* label = new QLabel(text);
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(label);
this->setLayout(layout);
anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.