QT tabwidget 代码添加标签页的方法(可以最大化)

QT用代码对界面进行布局时,按常规思路在tabwidget遇到一个很大的问题:就是最大化后有问题,没有实现最大化的效果。

后来通过各种查找最后又找到一种方法对tabwidget添加页:

//.h文件
class Data : public QMainWindow
{
    Q_OBJECT

public:
    Data(QWidget *parent = Q_NULLPTR);
private:
    Ui::DataClass ui;
    QTabWidget  *m_TabWidget;

    void initTabWidget();
};

class BackDataTab : public QWidget
{
    Q_OBJECT

public:
    explicit BackDataTab(QWidget *parent = 0);
public:
    const int m_EditHight;
    QLabel       *m_LabelFilterWidgetYMax,
                 *m_LabelFilterWidgetYMin,
                 *m_LabelFFTWidgetYMax;

    QLineEdit    *m_LineEditFilterWidgetYMax,
                 *m_LineEditFilterWidgetYMin,
                 *m_LineEditFFTWidgetYMax,
                 *m_LineEditVideoPath;

    QCheckBox    *m_CheckBoxPass1,
                 *m_CheckBoxPass2,
                 *m_CheckBoxPass3,
                 *m_CheckBoxPass4;

    QPushButton  *m_PushBtnVideo;

    QGroupBox    *m_GroupChioceShow,
                 *m_GroupChoicePass,
                 *m_GroupFilterAFFTYValue,
                 *m_GroupVideo;

    QRadioButton *m_RadioBtnFilter,
                 *m_RadioBtnNotch;

    QCustomPlot  *m_CustomFilter,
                 *m_CustomFFT;

    private slots:
    void slotBtnVideo();
    void slotCheckPass1();
    void slotCheckPass2();
    void slotCheckPass3();
    void slotCheckPass4();
private:
    QVector<int> m_VectCurPass;
    void ChoiceCheck();
    void initSignalSlot();
};

//.cpp文件
Data::Data(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    // 显示部分布局
    m_TabWidget = new QTabWidget;
    m_TabWidget->addTab(new BackDataTab(), QString::fromLocal8Bit("数据回放"));

    setCentralWidget(m_TabWidget);
    setWindowState(Qt::WindowMaximized);
}

BackDataTab::BackDataTab(QWidget *parent /* = 0 */)
    :QWidget(parent)
    , m_EditHight(30)
{
    m_GroupVideo = new QGroupBox(QString::fromLocal8Bit("选择要回放的录像"));
    m_LineEditVideoPath = new QLineEdit();
    m_PushBtnVideo = new QPushButton(tr("..."));
    m_PushBtnVideo->setFixedWidth(m_EditHight);
    m_PushBtnVideo->setFixedHeight(m_EditHight);
    m_LineEditVideoPath->setFixedHeight(m_EditHight);
    m_LineEditVideoPath->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    QHBoxLayout *HBLayoutVideo = new QHBoxLayout();
    HBLayoutVideo->addWidget(m_LineEditVideoPath);
    HBLayoutVideo->addWidget(m_PushBtnVideo);
    HBLayoutVideo->addSpacing(0);
    m_GroupVideo->setLayout(HBLayoutVideo);

    ...

    QHBoxLayout *HBLayoutTab = new QHBoxLayout();
    HBLayoutTab->addLayout(VBLayoutChartView);
    HBLayoutTab->addLayout(VBLayoutTab);
    HBLayoutTab->setStretchFactor(VBLayoutChartView, 8);
    HBLayoutTab->setStretchFactor(VBLayoutTab, 2);
    HBLayoutTab->setSpacing(0);      // 设置控件中元素间距
    setLayout(HBLayoutTab);
}

原来使用的另一种方式是:

QWidget *widgetBackData = new QWidget();
widgetBackData->setLayout(HBLayoutTab2);
m_TabWidget->addTab(widgetBackData, QString::fromLocal8Bit("数据回放"));
setCentralWidget(m_TabWidget);

这种的最大化的时候就会出现问题,问了一些大佬说,这种的是因为最顶层不是layout导致的,不是特别明白要怎么做,有大佬懂得,欢迎指点。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值