如标题所示,想完成此项功能,写了一个Demo,出现段错误,想请各位大虾指点一二。
#include "mainwidget.h"
#include "ui_mainwidget.h"
static QPoint pMouse;
static QPoint rMouse;
static int state = 1;
int MainWidget::iCurrentWidget = 1;
MainWidget::MainWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWidget)
{
ui->setupUi(this);
createWidget();
insertWidget();
initConnect();
//setWidget(iCurrentWidget);
}
MainWidget::~MainWidget()
{
delete ui;
}
//初始化widget栈中的对象,安装事件过滤器
void MainWidget::createWidget()
{
w1 = new Widget_1();
w2 = new Widget_2();
w3 = new Widget_3();
w1->installEventFilter(this);
w2->installEventFilter(this);
w3->installEventFilter(this);
}
//将widget对象插入栈中,设置初始widget
void MainWidget::insertWidget()
{
ui->stackedWidget->insertWidget(1,w1);
ui->stackedWidget->insertWidget(2,w2);
ui->stackedWidget->insertWidget(3,w3);
//ui->stackedWidget->setCurrentIndex(iCurrentWidget);
ui->stackedWidget->setCurrentWidget(w1);
}
void MainWidget::initConnect()
{
connect(w1,SIGNAL(goToWidget_1()),this,SLOT(goToWidget_1()));
connect(w2,SIGNAL(goToWidget_2()),this,SLOT(goToWidget_2()));
connect(w3,SIGNAL(goToWidget_3()),this,SLOT(goToWidget_3()));
}
int MainWidget::getCurrentWidgetIndex()
{
return ui->stackedWidget->currentIndex();
}
void MainWidget::goToWidget_1()
{
ui->stackedWidget->setCurrentWidget(w1);
MainWidget::iCurrentWidget = this->getCurrentWidgetIndex();
}
void MainWidget::goToWidget_2()
{
ui->stackedWidget->setCurrentWidget(w2);
MainWidget::iCurrentWidget = this->getCurrentWidgetIndex();
}
void MainWidget::goToWidget_3()
{
ui->stackedWidget->setCurrentWidget(w3);
MainWidget::iCurrentWidget = this->getCurrentWidgetIndex();
}
void MainWidget::setWidget(int index)
{
if(index == 1)
{
goToWidget_1();
}
if(index == 2)
{
goToWidget_2();
}
if(index == 3)
{
goToWidget_3();
}
}
bool MainWidget::eventFilter(QObject *obj, QEvent *evt)
{
if (!obj->isWidgetType())
{