Qt QStackedWidget分页出BUG
代码如下,望各位大侠帮帮忙:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
//支持中文实现
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));
widget = new QWidget;
//左侧布局
QVBoxLayout *buttonLayout = new QVBoxLayout;
QWidget *leftWidget = new QWidget(this); //新建一个QWidget
buttonLayout->addWidget(leftWidget);
QPixmap pixmap(":images/mu333.jpg"); //设置背景
QPalette palette;
palette.setBrush(leftWidget->backgroundRole(),QBrush(pixmap));
leftWidget->setPalette(palette);
leftWidget->setFixedSize(100,500);
leftWidget->setAutoFillBackground(true);
//左侧布局控件
QLabel *label1 = new QLabel(leftWidget);
label1->setText("系统管理");
QPalette pe1;
pe1.setColor(QPalette::WindowText,Qt::white);
label1->setPalette(pe1);
label1->setGeometry(QRect(25,2,75,20));
label1->setAlignment(Qt::AlignTop);
label2 = new QLabel(leftWidget);
label2->setText("资源测试");
QPalette pe2;
pe2.setColor(QPalette::WindowText,Qt::white);
label2->setPalette(pe2);
label2->setGeometry(QRect(25,100,75,20));
label2->setAlignment(Qt::AlignTop);
label3 = new QLabel(leftWidget);
label3->setText("数据系统");
QPalette pe3;
pe3.setColor(QPalette::WindowText,Qt::white);
label3->setPalette(pe3);
label3->setGeometry(QRect(25,205,75,20));
label3->setAlignment(Qt::AlignTop);
label4 = new QLabel(leftWidget);
label4->setText("查询系统");
QPalette pe4;
pe4.setColor(QPalette::WindowText,Qt::white);
label4->setPalette(pe4);
label4->setGeometry(QRect(25,305,75,20));
label4->setAlignment(Qt::AlignTop);
QPushButton *button1 = new QPushButton(leftWidget);
QPushButton *button2 = new QPushButton(leftWidget);
QPushButton *button3 = new QPushButton(leftWidget);
QPushButton *button4 = new QPushButton(leftWidget);
button1->setGeometry(25,20,50,20);
button2->setGeometry(25,125,50,20);
button3->setGeometry(25,227,50,20);
button4->setGeometry(25,330,50,20);
//左侧按钮属性设置
button1->setIcon(QIcon(":/images/Categories.png")); //系统管理按钮
button1->setIconSize(QSize(60,60));
button1->setFixedSize(55,59);
button1->setFlat(true);
button2->setIcon(QIcon(":/images/YouTube.png")); //资源测试按钮
button2->setIconSize(QSize(60,60));
button2->setFixedSize(55,59);
button2->setFlat(true);
button3->setIcon(QIcon(":/images/Calculator_alt.png")); //数据系统按钮
button3->setIconSize(QSize(80,80));
button3->setFixedSize(55,59);
button3->setFlat(true);
button4->setIcon(QIcon(":/images/RiPTones.png")); //查询系统按钮
button4->setIconSize(QSize(100,100));
button4->setFixedSize(55,59);
button4->setFlat(true);
//右边布局
QGridLayout *rightLayout = new QGridLayout;
stackedWidget = new QStackedWidget;
rightLayout->addWidget(stackedWidget);
stackedWidget->addWidget(creat_1Page);
stackedWidget->addWidget(creat_2Page);
stackedWidget->addWidget(creat_3Page);
stackedWidget->addWidget(creat_4Page);
connect(button1, SIGNAL(clicked()),stackedWidget, SLOT(slot_1()));
connect(button2, SIGNAL(clicked()),stackedWidget, SLOT(slot_2()));
connect(button3, SIGNAL(clicked()),stackedWidget, SLOT(slot_3()));
connect(button4, SIGNAL(clicked()),stackedWidget, SLOT(slot_4()));
QPixmap pixmap2(":images/ipade.png"); //设置背景
QPalette palette2;
palette2.setBrush(stackedWidget->backgroundRole(),QBrush(pixmap2));
stackedWidget->setPalette(palette2);
stackedWidget->setFixedSize(800,495);
stackedWidget->setAutoFillBackground(true);
//右侧主页按钮属性
QPushButton *button5 = new QPushButton(stackedWidget);
button5->setIconSize(QSize(60,60));
button5->setFixedSize(550,233);
button5->setGeometry(66,118,55,30);
button5->setFlat(true);
QPushButton *button6 = new QPushButton(stackedWidget);
button6->setIconSize(QSize(60,60));
button6->setFixedSize(50,50);
button6->setGeometry(319,360,55,30);
button6->setFlat(true);
QPushButton *button7 = new QPushButton(stackedWidget);
button7->setIconSize(QSize(60,60));
button7->setFixedSize(50,50);
button7->setGeometry(161,360,55,30);
button7->setFlat(true);
QPushButton *button8 = new QPushButton(stackedWidget);
button8->setIconSize(QSize(60,60));
button8->setFixedSize(50,50);
button8->setGeometry(465,360,55,30);
button8->setFlat(true);
//双表关联
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addLayout(buttonLayout);
mainLayout->addLayout(rightLayout);
mainLayout->addWidget(stackedWidget);
setLayout(mainLayout);
stackedWidget->showNormal();
}
Widget::~Widget()
{
}
void Widget::slot_1()
{
stackedWidget->setCurrentIndex(0);
}
void Widget::slot_2()
{
stackedWidget->setCurrentIndex(1);
}
void Widget::slot_3()
{
stackedWidget->setCurrentIndex(2);
}
void Widget::slot_4()
{
stackedWidget->setCurrentIndex(3);
}
void Widget::creatWidget_1()
{
creat_1Page = new QWidget;
}
void Widget::creatWidget_2()
{
creat_2Page = new QWidget;
}
void Widget::creatWidget_3()
{
creat_3Page = new QWidget;
}
void Widget::creatWidget_4()
{
creat_4Page = new QWidget;
}