转载地址: 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. Tunna内网转发

    Tunna和reduh原理一样.. 使用方法: 上传源码包中文件夹webshell下的脚本至网站目录 然后本地进行连接上传的webshell即可 python proxy.py -u http://1 ...

  2. BZOJ 2822: [AHOI2012]树屋阶梯

    Description 求拼成阶梯状的方案数. Sol 高精度+Catalan数. 我们可以把最后一行无线延伸,所有就很容易看出Catalan数了. \(f_n=f_0f_{n-1}+f_1f_{n- ...

  3. 二分图------》Hopcroft-Karp算法 hdu2389

    Hopcroft-Karp算法 该算法由John.E.Hopcroft和Richard M.Karp于1973提出,故称Hopcroft-Karp算法. 原理 为了降低时间复杂度,可以在增广匹配集合M ...

  4. struts2将servlet对象注入到Action中

    在struts2框架中,可以通过IoC方式将servlet对象注入到Action中,通常需要Action实现以下接口: a. ServletRequestAware: 实现该接口的Action可以直接 ...

  5. phpcms新闻详情页上一篇下一篇的实现

    在新闻详情页(show.html或show_*.html) 只需要添加类似如下代码即可: <div>上一篇:<a href="{$previous_page[url]}&q ...

  6. C++拷贝构造函数(深拷贝,浅拷贝)

    对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. #i ...

  7. linux pep8 检查工具

    感谢dongweiming大神.

  8. c#缓存 笔记

    1:缓存. 你需要了解大数据高并发的瓶颈在哪里,一般都是数据库层面的,机械硬盘承载不起非常快速的读写操作,cpu承载不起大量的逻辑运算,所以最基本的解决思路就是:1.换固态硬盘加快硬盘的读写效率.2. ...

  9. ACM/ICPC 之 Kruskal范例(ZOJ1203-POJ1861(ZOJ1542))

    两道最小生成树范例,Kruskal解法-以边为主体扩展最小生成树,需要利用并查集. ZOJ1203-Swordfish 题意:求n个给定平面坐标的城市中的一条平面距离上的最短路长(保留两位小数) 题解 ...

  10. FFmpeg-20160422-snapshot-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...