转载地址: 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. (原创)android中使用相机的两种方式

    在社交类应用或扫描二维码的场合都需要用到手机上的摄像头 在程序中启用这一硬件主要有两类方法 1.发送intent启动系统自带的摄像应用 此应用的AndroidManifest中的intent-filt ...

  2. mysql 数据库字符集的指定

    create database mydb default character set utf8 default collate utf8_general_ci;

  3. jquery 打印宽高

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 善用VS中的Code Snippet来提高开发效率

    http://www.cnblogs.com/anderslly/archive/2009/02/16/vs2008-code-snippets.html http://www.cnblogs.com ...

  5. 在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作

    Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常ID ...

  6. Print Common Nodes in Two Binary Search Trees

    Given two Binary Search Trees, find common nodes in them. In other words, find intersection of two B ...

  7. sharepoint定义固定的网站集

    SPSite site = new SPSite(http://192.168.0.3/);            SPWeb web = site.RootWeb;

  8. POJ 2769

    http://poj.org/problem?id=2796 题意:求n个数的和乘以这n个数中的最小值的积最大的数,以及其范围. 思路:求每一个数两边的比其大的数的和,再乘以这个数.还有一个范围,用单 ...

  9. WinAPI: ShellExecute - 打开外部程序或文件

    WinAPI: ShellExecute - 打开外部程序或文件 ShellExecute(   hWnd: HWND;        {指定父窗口句柄}   Operation: PChar;  { ...

  10. 1.nodejs权威指南--基础知识

    1. 基础知识 1.1 全局作用域及函数 1.1.1 全局作用域 在nodejs中,定义了一个global对象,代表nodejs中的全局命名空间,任何全局变量.函数或对象都是该对象的一个属性值 1.1 ...