转载地址: http://blog.csdn.net/a649518776/article/details/6636578

下面用代码实现上面窗口的设计

 # -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
class Stacked(QDialog):
def __init__(self, parent=None):
super(Stacked, self).__init__(parent)
self.setWindowTitle(self.tr("StackedWidget")) leftlist = QListWidget(self)
leftlist.insertItem(0, 'window1')
leftlist.insertItem(1, 'window2')
leftlist.insertItem(2, 'window3') label1 = QLabel('windowTest1\n11111111 ')
label2 = QLabel('windowTest2\n22222222 ')
label3 = QLabel('windowTest3\n33333333 ') stack = QStackedWidget(self)
stack.addWidget(label1)
stack.addWidget(label2)
stack.addWidget(label3) mainLayout = QHBoxLayout(self)
mainLayout.setMargin(5) # 对话框边距设为5 Margin 边距 5px
mainLayout.setSpacing(5) # 内部控件间距为5 Spacing间距 5px
mainLayout.addWidget(leftlist)
mainLayout.addWidget(stack, 0, Qt.AlignHCenter)
mainLayout.setStretchFactor(leftlist, 1)
mainLayout.setStretchFactor(stack, 3) # 设定了list与stack比例为1:3。
self.connect(leftlist, SIGNAL('currentRowChanged(int)'), stack, SLOT('setCurrentIndex(int)')) if __name__ == '__main__':
app = QApplication(sys.argv)
main = Stacked()
main.show()
app.exec_()

效果:

解析:

1.这里的程序是,选中左边列表框内的内容,显示相应的窗体。

2.所以,第一步是初始化列表框QListWidget。

3.第二步新建堆栈窗体:

stack = QStackedWidget(self)

然后将三个相应的label放入其中:

        stack.addWidget(label1)
stack.addWidget(label2)
stack.addWidget(label3)

4.设置主窗体布局时,用到了布局管理器。这里用到的是水平排列窗体QHBoxLayout:

mainLayout = QHBoxLayout(self)

这个布局管理器用法为:

mainLayout.setMargin(5)  # 对话框边距设为5 Margin 边距  5px
mainLayout.setSpacing(5) # 内部控件间距为5 Spacing间距 5px

setStetchFactor函数

mainLayout.setStretchFactor(leftlist, 1)
mainLayout.setStretchFactor(stack, 3) # 设定了list与stack比例为1:3。

5.设定消息相应的信号与槽:

self.connect(leftlist, SIGNAL('currentRowChanged(int)'), stack, SLOT('setCurrentIndex(int)'))

【转载】 Pyqt QStackedWidget堆栈窗体的更多相关文章

  1. 初学Qt——菜单栏QAction+ QstackedWidget堆栈窗体实现切换分页

    QstackedWidget 堆栈窗体,具体不作详述,stackedWidget 主要实现效果类似与界面分页效果,主要常与QListWidget QtreeWidget QTableWidget等结合 ...

  2. Qt5布局管理(三)——QStackedWidget堆栈窗口类

    转载:LeeHDsniper 实例效果如下图: 如上图,堆栈窗口左半部分是一个QListWidget对象,右半部分是分别是三个标签.通过点击左边不同的项目,可以使得右边的Lable进行切换. 具体的结 ...

  3. 转载:pyqt线程间通过 信号/槽 通信

    转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时, ...

  4. Pyqt QDockWidget 停靠窗体

    网上的一个关于QDockWidget 停靠窗体的教程 代码: # -*- coding: utf-8 -*- from PyQt4.QtGui import * from PyQt4.QtCore i ...

  5. 004——转载C#禁止改变窗体大小

    原文链接:http://www.cnblogs.com/shaozhuyong/p/5545005.html 1.先把MaximizeBox和MinimumBox设置为false,这时你发现最大最小化 ...

  6. (转载)C# winform 在一个窗体中如何设置另一个窗体的TextBox的值

    方法1:修改控件的访问修饰符.(不建议使用此法) public System.Windows.Forms.TextBox textBox1; 在调用时就能直接访问 Form1 frm = new Fo ...

  7. [Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题

    初接触Qt,使用的教程是陆文周编写的<Qt5开发及实例>一书. 其中有关于QDockWidget.QStackedWidget这些类的介绍和使用实例. 要首先说明的是书上讲的非常的清楚,代 ...

  8. Qt创建堆叠窗口

    1.QT创建堆叠窗口使用类,但是使用它时主窗口不能是MainWindow,否则会出现布局错误,本例中使用基类为QDialog QStackedWidget 2.可以配合列表框QListWidget和Q ...

  9. PyQt5创建第一个窗体(正规套路)

    一.Pyqt5 创建第一个窗体 很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法.使用设计器的好处是直观.维护方便,尤其开发复杂窗体的效率高. 但是每次修改ui文件后,需要重新生 ...

随机推荐

  1. Graphic32中TBitmap32.TextOut性能分析[转载]

    转载:http://blog.csdn.net/avan_lau/article/details/6958497 最近在分析软件中画线效率问题,发现在画一些标志性符号的方法,存在瓶颈,占用较大的时间. ...

  2. Maven的作用总结

    前言: maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能! 1 . 帮你下载jar包 maven项目会有一个 pom.xml文件, 在这个文件里面 ...

  3. django xadmin 外键

    style_fields = {'db栏位名称': "fk-ajax"} 实体关系: Account (*)-->(1) user 表单控件: 下拉框 美化用了selecti ...

  4. rabbitMQ中vhost虚拟主机的理解

    每个virtual host本质上都是一个RabbitMQ Server,拥有它自己的queue,exchagne,和bings rule等等.这保证了你可以在多个不同的application中使用R ...

  5. 实验二 PHP基本语法实验

    实验二 PHP基本语法实验 0 实验准备 0.1实验环境和相关工具软件 具体到的机房环境,请在Windowsxp环境下做本实验: l  操作系统:Windowsxp l  Web服务器:Apache ...

  6. perl 判断数组相等的三种方法

    1.数组相等,数组成员相同,位置也相同 一般的如果判断@array1 等于 @array2 a.数组长度相同 $#array1=$#array2, 比较数组长度,不能使用length函数,length ...

  7. h5页面的公共css

    /*reset*/body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,tex ...

  8. [转] git fetch与pull

    原文: http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git fetch:相当于是从远程获取最新版本到本地 ...

  9. SprignMVC+myBatis整合

    转载自:http://lydia-fly.iteye.com/blog/2153076 学习本节内容请先看"MyBatis的基本应用".地址:http://lydia-fly.it ...

  10. 【leetcode】Candy(hard) 自己做出来了 但别人的更好

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...