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

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

 

《ASCE1885的Qt学习点滴》の堆栈窗口_第1张图片

选中左侧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配合使用!!

 

 

你可能感兴趣的:(list,qt,Signal,2010)