qt常用函数在PYQT中的使用方法

来源:互联网 发布:修改短信内容软件 编辑:程序博客网 时间:2024/05/16 11:46

qt常用函数使用方法

 (2010-08-31 10:16:26)

by australia


from http://blog.sina.com.cn/s/blog_644f2d490100lhaz.html

PyQt4 QDockWidget 使用教程

在pyqt4 中 dock 是一个镶嵌在主窗口 而又能拉出来成立一个独立窗口的控件 ,dock 是QDockWidget 的对象

dock=QDockWidget('title',self) #实例化一个dock title 为标题 self 为parent 因为QDockWidget 不添加到布局管理器中 所以我们需要传一个parent 给他

dock.setObjectName("dock") #设置dock的对象名称

dock.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea) #设置dock只能在左边 或者右边显示

allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas

dock.setWidget(QLabel) #添加一个label控件

dock.setFeatures(QDockWidget.NoDockWidgetFeatures) #设置dock是否可以关闭拉出等

参数还有 QDockWidget.DockWidgetClosable 可以关闭 DockWidgetMovable 可以移动

DockWidgetFloatable #可以独立出来 DockWidgetVerticalTitleBar 垂直显示标题 AllDockWidgetFeatures 除垂直标题以外 以上所有 NoDockWidgetFeatures

self.addDockWidget(Qt.RightDockWidget,dock) 添加dock到主窗口第一个参数为显示位置

 

PyQt4 在子窗口动态设置父窗口方法

1 采用apply方法

传递需要修改数据的引用给子对话框

   在子对话框apply按钮的插槽方法中发出一个信号,如 finshed

   接着在父窗口连接这个信号接着显示子窗口child.show()

记得在__init__方法下面写上self.setAttribute(Qt.WA_DeleteOnClose) 这句的作用是在子对话框close的时候把它删除 释放资源 (下面还有另一个方法 释放资源)

2 在父窗口定义一个 字窗口的 接口 如: self.child=None

然后实例子窗口赋给self.child 传递一个callback 函数

if self.child is None: # 这个方法不错

     slef.child=childDialog()

self.child.show()

self.child.raise_()

self.child.activateWindow()

下面是实例代码 父窗口

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import ModelDialoglive


class MainForm(QDialog):

def __init__(self,parent=None):
   super(MainForm,self).__init__(parent)
   self.child=None
   self.table=QTableWidget()
   self.table.setColumnCount(40)
   self.table.setRowCount(30)
   self.table.setWhatsThis("mantou")
   #set Column tab title
   #self.table.setHorizontalHeaderLabels(list(range(5,10)))
   for i in range(0,5):
    for x in range(0,7):
     item=QTableWidgetItem(str(i+x))
     item.setTextAlignment(Qt.AlignLeft |Qt.AlignCenter)
     item.setBackgroundColor(Qt.green)
     self.table.setItem(x,i,item)

   fbutton=QPushButton("&F")
   cbutton=QPushButton("&C")
   lbutton=QPushButton("&L")
   Vlayout=QHBoxLayout()
   Vlayout.addWidget(fbutton)
   Vlayout.addWidget(lbutton)
   Vlayout.addWidget(cbutton)
   Hlayout=QVBoxLayout()
   Hlayout.addWidget(self.table)
   Hlayout.addLayout(Vlayout)
   self.setLayout(Hlayout)
   self.setGeometry(200,300,500,400)
   self.setWindowTitle("Table")
   self.connect(lbutton,SIGNAL("clicked()"),self.liveChange)

def callback(self,c=0,r=0):
   self.table.clear()
   for i in range(0,c):
    for x in range(0,r):
     item=QTableWidgetItem(str(i+x))
     item.setTextAlignment(Qt.AlignLeft|Qt.AlignCenter)
     item.setBackgroundColor(Qt.red)
     self.table.setItem(x,i,item)

def liveChange(self):
   if self.child==None:
    self.child=ModelDialoglive.liveDialog(self.callback,self)
   self.child.show()


if __name__=="__main__":
app=QApplication(sys.argv)
mf=MainForm()
mf.show()
app.exec_()


子窗口

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class liveDialog(QDialog):
def __init__(self,callback,parent=None):
   super(liveDialog,self).__init__(parent)
   self.callback=callback
   C_MAX=10
   R_MAX=15
   self.c_edit=QLineEdit()
   self.r_edit=QLineEdit()
   layout=QHBoxLayout()
   layout.addWidget(self.c_edit)
   layout.addWidget(self.r_edit)
   self.setLayout(layout)

   self.connect(self.c_edit,SIGNAL("textChanged(QString)"),self.updateUi)
   self.connect(self.r_edit,SIGNAL("textEdited(QString)"),self.updateUi)

def updateUi(self,text):
   c=self.c_edit.text()
   r=self.r_edit.text()
   if c and r:
    self.callback(int(c),int(r))
PyQt4 QCheckBox 使用教程

setChecked(bool) 设置是否选择

isChecked() 返回bool

发出toggled(bool)信号

PyQt4 QTableWidget 使用教程

self.table=QTableWidget() #实例化


   self.table.setColumnCount(4) #设置列数


   self.table.setRowCount(6) #设置行数


   self.table.setWhatsThis("mantou") ###

self.table.setEditTriggers(QTableWidget.NoEditTriggers) #设置为不能编辑单元格
   #set Column tab title
   self.table.setHorizontalHeaderLabels(list(range(5,10)))

   self.table.setVerticalHeaderLabels(["a","d"] ) #设置 行title

self.table.setAlternatingRowColors(bool) #设置交替行颜色


   for i in range(0,5):
    for x in range(0,7):
         item=QTableWidgetItem(str(i+x)) 实例一个item对象
         item.setTextAlignment(Qt.AlignLeft |Qt.AlignCenter) 设置对齐方式
        item.setBackgroundColor(Qt.green) 设置背景
        self.table.setItem(x,i,item) 添加Item

 

PyQt4 QVBoxLayout QHBoxLayout QGridLayout 使用教程

pyqt4 的三个布局管理器

QHBoxLayout 水平布局 QVBoxLayout 垂直布局 QGridLayout 表格布局

以下g为表格布局 a b 为水平垂直布局任一个

a.addLayout(b) 添加b布局到a上

a.addSpacing(20) 添加20水平宽度的空白 b类型 垂直方向

a.addStretch(10) 添加一个固定长度的延伸

b.addWidget(QWidget) 添加一个QWidget 到布局

b.addStretchFactor(QWidget,20)

g.addLayout(a,0,2) 在第一行第三列添加一个水平布局

g.addWidget(QWidget,0,2,1,2) 在第一行第三列,占一行 两列 位置 添加一个QWidget

g.setRowStretch(1,20) 设置第二行的高度为20

g.setColumnStretch(1,20) 设置第二列的宽度为20

PyQt4 QListWidget 使用教程

listWidget = QListWidget() #实例化一个(item base)的列表

listWidget.addItem('dd') #添加一个项

listWidget.addItems([]) # 从序列中添加子项

listWidget.setDragEnabled(True) #设置拖拉

listWidget.sortItems() #排序

listWidget.setSortingEnabled(bool) #设置自动排序

listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #设置选择模式

选择模式有:ExtendedSelection 按住ctrl多选, SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection 鼠标拖拉多选

listWidget.setCurrentRow(0) 设置当前选择行 默认为-1

listWidget.count() #得到子项总数

listWidget.item(row).text() #得到第 row 行的内容 listWidget.item(row) 返回一个item 对象

listWidget.takeItem(row) #返回row 行的 所在的item 对象 可以用在 insertItem()中

listWidget.insertItem(2,item) #在第二行插入一项 item 可谓为一个listviewitem对象或者string

listWidget.setCurrentItem('dd') #设置'dd'为当前项

listWidget.selectedItems() 返回一个 包含item对象 的list 对象

修改item 的内容

item.setText('dsds') # 设置item的内容为dsds item为对象 可从 listWidget.item(row) takeItem(row) 得到

 

PyQt4 QInputDialog 使用教程

string, ok = QInputDialog.getText(self, '标题', '说明文字') #   显示一个标题为标题说明文字为说明问题的输入对话框!string 为输入的内容 ok 为点击的按钮

    if ok and not string.isEmpty(): #如果点击了确定   输入了内容

 

PyQt4 QPushButton 使用教程

button = QPushButton('***) # 实例化一个text为***)的按钮

button.setFocusPolicy() #设置焦点样式 样式有:Qt.NoFocus: 无焦点,Qt.TabFocus:用tab切换焦点,Qt.ClickFocus:点击切换焦点,Qt.StrongFocus:貌似跟click一样 Qt.WheelFocus

button.setCheckable(True) #设置为开关按钮 toggle 就是按下按钮不会弹起

button.isChecked() 返回bool值 只有setCheckable()为true时有效

button.setShortcut('Ctrl+F') #设置快捷方式

 

原创粉丝点击