《ASCE1885的Qt学习点滴》の堆栈窗口

本文来说一个堆栈窗体吧,这可是经常用到滴!效果如下图所示:

《ASCE1885的Qt学习点滴》の堆栈窗口

选中左侧QListWidget列表框中不同的选项时,在右侧QStackedWidget就会显示所选的窗体。

=====================实现的头文件stackdialog.h====================

#ifndef STACKDIALOG_H

#define STACKDIALOG_H

#include <QtGui/QDialog>

class QLabel;

class QListWidget;

class QStackedWidget;

class StackDialog : public QDialog

{

Q_OBJECT

public:

StackDialog(QWidget *parent=0);

QLabel *label1;

QLabel *label2;

QLabel *label3;

QListWidget *list;

QStackedWidget *stack;

};

#endif // STACKDIALOG_H

======================实现源文件stackdialog.cpp===================

#include "stackdialog.h"

#include <QtGui/QListWidget>

#include <QtGui/QLabel>

#include <QtGui/QStackedWidget>

#include <QtGui/QHBoxLayout>

StackDialog::StackDialog(QWidget *parent)

: QDialog(parent)

{

setWindowTitle(tr("Stacked Widgets"));

//左侧列表框

list = new QListWidget(this);

list->insertItem(0, tr("Window 1"));

list->insertItem(1, tr("Window 2"));

list->insertItem(2, tr("Window 3"));

label1 = new QLabel(tr("This is Window 1"));

label2 = new QLabel(tr("This is Window 2"));

label3 = new QLabel(tr("This is Window 3"));

//右侧堆栈窗口

stack = new QStackedWidget(this);

stack->addWidget(label1);

stack->addWidget(label2);

stack->addWidget(label3);

//对整个对话框进行布局

QHBoxLayout *mainLayout = new QHBoxLayout(this);

mainLayout->setMargin(5);

mainLayout->setSpacing(5);

mainLayout->addWidget(list);

mainLayout->addWidget(stack, 0, Qt::AlignHCenter);

mainLayout->setStretchFactor(list, 1); //左侧列表框占1

mainLayout->setStretchFactor(stack, 3);//右侧堆栈窗口占3

connect(list, SIGNAL(currentRowChanged(int)),

stack, SLOT(setCurrentIndex(int)));

}

=====================工程的pro文件==========================

#-------------------------------------------------

#

# Project created by QtCreator 2010-08-17T22:00:42

#

#-------------------------------------------------

QT += core

TARGET = StackDialog

CONFIG += Windows

CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp /

stackdialog.cpp

HEADERS += /

stackdialog.h

=======================main函数===========================

#include <QtGui/QApplication>

#include "stackdialog.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

StackDialog dlg;

dlg.show();

return app.exec();

}

在实际应用中,堆栈窗体多与列表框QListWidget及下拉列表框QComboBox配合使用!!

你可能感兴趣的:(qt)