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

本文介绍了一个实用的Qt界面设计技巧,通过QListWidget和QStackedWidget实现不同窗体间的切换。左侧列表框选择不同项时,右侧会显示对应的窗体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值