以下源码来自“QT小神童”视频(有微小变更)
头文件:config.h
#ifndef CONFIG_H
#define CONFIG_H
#include <QtGui/QWidget>
#include <QListWidget>
#include <QListWidgetItem>
#include <QVBoxLayout>
#include <QTextCodec>
#include <QPushButton>
#include <QStackedWidget>
#include <QHBoxLayout>
#include <MyPage.h>
class config : public QWidget
{
Q_OBJECT
public:
config(QWidget *parent = 0);
~config();
QListWidget *list;
MyPage1 *page1;
MyPage2 *page2;
MyPage3 *page3;
QStackedWidget *InfoWidget;
protected slots:
void pagechanged(int);
};
#endif // CONFIG_H
头文件:mypage.h
#ifndef MYPAGE_H
#define MYPAGE_H
#include <QtGui/QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QGridLayout>
class MyPage1 : public QWidget
{
Q_OBJECT
public:
MyPage1(QWidget *parent = 0);
~MyPage1(){};
QLabel *NameLabel,*HeightLabel,*WeightLabel,*BWHLabel;
QLineEdit *NameEdit,*HeightEdit,*WeightEdit,*BWHEdit;
};
class MyPage2 : public QWidget
{
Q_OBJECT
public:
MyPage2(QWidget *parent = 0);
~MyPage2(){};
};
class MyPage3 : public QWidget
{
Q_OBJECT
public:
MyPage3(QWidget *parent = 0);
~MyPage3(){};
};
#endif // MYPAGE_H
以下是两个实现文件:
#include "config.h"
config::config(QWidget *parent)
: QWidget(parent)
{
list=new QListWidget;
list->setIconSize(QSize(128,128));
list->setSpacing(60);
list->setMaximumWidth(128);
list->setViewMode(QListView::IconMode);
list->setMovement(QListView::Static);
QListWidgetItem *item1=new QListWidgetItem;
item1->setIcon(QIcon(":/rotate.png"));
item1->setText(tr("旋转"));
QListWidgetItem *item2=new QListWidgetItem;
item2->setIcon(QIcon(":/butterfly1.PNG"));
item2->setText(tr("蝴蝶1"));
QListWidgetItem *item3=new QListWidgetItem;
item3->setIcon(QIcon(":/butterfly2.PNG"));
item3->setText(tr("蝴蝶2"));
list->addItem(item1);
list->addItem(item2);
list->addItem(item3);
QPushButton *btn= new QPushButton;
btn->setText(tr("关闭"));
connect(btn,SIGNAL(clicked()),this,SLOT(close()));
InfoWidget=new QStackedWidget;
page1=new MyPage1;
page2=new MyPage2;
page3=new MyPage3;
InfoWidget->addWidget(page1);
InfoWidget->addWidget(page2);
InfoWidget->addWidget(page3);
connect(list,SIGNAL(currentRowChanged(int)),this,SLOT(pagechanged(int)));
QHBoxLayout *hlayout=new QHBoxLayout;
hlayout->addWidget(list);
hlayout->addWidget(InfoWidget);
QGridLayout *mainlayout=new QGridLayout(this);
mainlayout->addLayout(hlayout,0,0,1,6);
mainlayout->addWidget(btn,1,5,1,1);
// QVBoxLayout *vlayout=new QVBoxLayout(this);
// vlayout->addWidget(list);
// vlayout->addWidget(btn);
// this->setLayout(vlayout);
this->resize(800,600);
}
config::~config()
{
}
void config::pagechanged(int index)
{
InfoWidget->setCurrentIndex(index);
}
第二个实现文件
#include "MyPage.h"
MyPage1::MyPage1(QWidget *parent)
:QWidget(parent)
{
NameLabel=new QLabel(tr("姓名:"));
HeightLabel=new QLabel(tr("身高:"));
WeightLabel=new QLabel(tr("体重:"));
BWHLabel=new QLabel(tr("三围:"));
NameEdit=new QLineEdit(tr("苍井空"));
HeightEdit=new QLineEdit(tr("155"));
WeightEdit=new QLineEdit(tr("45KG"));
BWHEdit=new QLineEdit(tr("85,80,85"));
QGridLayout *Glayout= new QGridLayout(this);
Glayout->addWidget(NameLabel,0,0);
Glayout->addWidget(HeightLabel,1,0);
Glayout->addWidget(WeightLabel,2,0);
Glayout->addWidget(BWHLabel,3,0);
Glayout->addWidget(NameEdit,0,1);
Glayout->addWidget(HeightEdit,1,1);
Glayout->addWidget(WeightEdit,2,1);
Glayout->addWidget(BWHEdit,3,1,1,2);
this->setLayout(Glayout);
}
MyPage2::MyPage2(QWidget *parent)
:QWidget(parent)
{
}
MyPage3::MyPage3(QWidget *parent)
:QWidget(parent)
{
}
最后是一个主程序
#include <QtGui/QApplication>
#include "config.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
config w;
w.show();
return a.exec();
}
还有一个资源文件:就是添加了以下三个图片:
多谢“QT小神童”,如果大家有什么好的视频,不妨把网址发给我,非常感谢哦。