QT窗体的切换

.h文件

#include<QWidget>
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QLabel>
classQQtieXiao:publicQWidget
{
Q_OBJECT
public:
 explicit QQtieXiao(QWidget*parent=0);
private:
 QWidget*widgetmain;
 QWidget*widgetfan;

signals:

public slots:
  voidgoTurn();
  voidgoReturn();

};

。cpp文件
#include"qqtiexiao.h"
#include<QPushButton>
#include<QLineEdit>
#include<QTextEdit>
QQtieXiao::QQtieXiao(QWidget*parent):
QWidget(parent)
{
this->setFixedSize(250,260);
this->setWindowFlags(Qt::FramelessWindowHint);//去掉window外框
widgetmain=newQWidget(this);
widgetmain->setFixedSize(250,260);
QVBoxLayout*layoutmain=newQVBoxLayout(widgetmain);
//layoutmain->setMargin(0);

QVBoxLayout*layouts=newQVBoxLayout;
layouts->setMargin(0);
QLabel*labels1=newQLabel(tr("-6C"));
labels1->setFixedHeight(60);
QLabel*labels2=newQLabel(tr("哈尔滨(当地)"));
labels2->setFixedHeight(30);
QLabel*labels3=newQLabel(tr("晴西北风"));
labels3->setFixedHeight(60);
layouts->addWidget(labels1);
layouts->addWidget(labels2);
layouts->addWidget(labels3);

QHBoxLayout*layoutz=newQHBoxLayout;
layoutz->setMargin(0);
QLabel*labelz1=newQLabel;
labelz1->setFixedHeight(80);
labelz1->setStyleSheet("background-color:red");
QLabel*labelz2=newQLabel;
labelz2->setFixedHeight(80);
labelz2->setStyleSheet("background-color:yellow");
QLabel*labelz3=newQLabel;
labelz3->setFixedHeight(80);
labelz3->setStyleSheet("background-color:black");
layoutz->addWidget(labelz1);
layoutz->addWidget(labelz2);
layoutz->addWidget(labelz3);

QHBoxLayout*layoutx=newQHBoxLayout;
layoutx->setMargin(0);
QLabel*labelx1=newQLabel(tr("黑龙江东北数字出版"));
labelx1->setFixedHeight(30);
layoutx->addWidget(labelx1);


layoutmain->addLayout(layouts);
layoutmain->addLayout(layoutz);
layoutmain->addLayout(layoutx);
widgetmain->setLayout(layoutmain);

QWidget*setwidght=newQWidget(widgetmain);
QPushButton*setbtn=newQPushButton(tr("曲"),setwidght);
connect(setbtn,SIGNAL(clicked()),this,SLOT(goTurn()));
setbtn->setFixedSize(20,20);
setwidght->setGeometry(220,10,20,20);


}
voidQQtieXiao::goTurn()
{
//这里写特效翻篇的过程
widgetmain->close();
widgetfan=newQWidget(this);
widgetfan->setFixedSize(250,260);
QVBoxLayout*layoutfanmain=newQVBoxLayout(widgetfan);
QLabel*labelf1=newQLabel(tr("设置"));
QLineEdit*leditf=newQLineEdit;
leditf->setFixedHeight(30);
QTextEdit*textedit=newQTextEdit;
textedit->setFixedHeight(70);
QPushButton*fbtn=newQPushButton(tr("完成"));
connect(fbtn,SIGNAL(clicked()),this,SLOT(goReturn()));
fbtn->setFixedSize(50,20);
layoutfanmain->addWidget(labelf1);
layoutfanmain->addWidget(leditf);
layoutfanmain->addWidget(textedit);
layoutfanmain->addWidget(fbtn);
widgetfan->setLayout(layoutfanmain);
widgetfan->show();

}
voidQQtieXiao::goReturn()
{
//这里写特效的返回窗体
widgetfan->close();
widgetmain->show();
}
说明:程序运行后后显示如下界面

但单击“曲”这个按钮时就会关闭当前这个窗体,切换到另一个窗体,切换后效果:

如果在去点击“完成”按钮时会又切换到上一窗体的。这样就实现了两个窗体之间的相互切换。


posted on 2013-03-29 09:37  Q11三工鸟yue  阅读(623)  评论(0编辑  收藏  举报