0

实际上,我遇到了一个大问题,我有一个 QTabWidget,其中包含多个名为 tab 的 QWidget 继承对象,我想更改 QTabWidget 索引功能中的 QStatusBar 但 QMainwindow 删除 QStatusBar (位于 Tab 对象中) 每次我更改选项卡时都会导致应用程序崩溃。这是我的代码

主窗口.h

#ifndef TAB_H
#define TAB_H

#include <QtWidgets>

class Tab : public QWidget
{
public:
    Tab(int id);
    QStatusBar *sbar;


private:
};

#endif // TAB_H

主窗口.cpp

#include "mainwindow.h"
#include "tab.h"
MainWindow::MainWindow()
{
tabs = new QTabWidget();

resize(800, 600);

connect(tabs, SIGNAL(currentChanged(int)), this, SLOT(currentChanged(int)));

for(int i = 0; i < 20; i++)
{
    tabs->addTab(new Tab(i), QString("%1").arg(i));
}

setCentralWidget(tabs);
}

MainWindow::~MainWindow()
{

}

void MainWindow::currentChanged(int)
{
    Tab *thistab = static_cast<Tab*>(sender());
    setStatusBar(new QStatusBar());
}

选项卡.h

#ifndef TAB_H
#define TAB_H

#include <QtWidgets>

class Tab : public QWidget
{
public:
    Tab(int id);
    QStatusBar *sbar;


private: 
};

#endif // TAB_H

选项卡.cpp

#include "tab.h"

Tab::Tab(int id)
{
    sbar = new QStatusBar();
    QHBoxLayout hbl;
    QLabel *ll = new QLabel("StatusBar tester: Tab number : #"+QString("%1").arg(id));
    sbar->addWidget(new QLabel(QString("%1").arg(id)));
    hbl.addWidget(ll);
    setLayout(&hbl);

}

谢谢你的耐心

4

0 回答 0