您的位置:首页 > 编程语言 > Qt开发

qt的两个类学习:QStackedWidget和QListWidget

2011-12-05 13:48 543 查看
以下源码来自“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小神童”,如果大家有什么好的视频,不妨把网址发给我,非常感谢哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: