控件

 fromComboBox = QComboBox() 添加一个 combobox


        fromComboBox.addItem(rates) 添加一个下拉选项

      fromComboBox.addItems(["%d years" % x for x in range(2, 26)]) 从序列中添加

         fromComboBox.setMaxVisibleItems(10) #设置最大显示下列项 超过要使用滚动条拖拉

        fromComboBox.setMaxCount(5) #设置最大下拉项 超过将不显示

        fromComboBox.setInsertPolicy(QComboBox.InsertAfterCurrent) #设置插入方式

      插入方式有:NoInsert,InsertAtTop,InsertAtCurrent,InsertAtBottom,InsertAfterCurrent

                      InsertBeforeCurrent,InsertAlphabetically

                      字面意思都好理解 最后一个是按字母表顺序插入

 

       QComboBox 发出一个currentIndexChanged(int) 的信号.

       QComboBox 得到当前项 currentIndex() + 1 #QComboBox 默认的currentIndex为 -1

       QComboBox.findText('dsfds') #返回 内容为dsfds的索引

        QComboBox 得到当前项文本内容     currentText()

        fromSpinBox = QDoubleSpinBox()


        fromSpinBox.setRange(0.01, 10000000.00)

       fromSpinBox.setSuffix(" %d") #设置后缀 如显示 10.0%d

        fromSpinBox.setPrefix('#d') #设置前缀
        fromSpinBox.setValue(1.00) 设置值

       QDoubleSpinBox 发出 valueChanged(double) 信号 有setValue(double)插槽

 

 

 

QLineEdit 单行输入框

lineedit = QLineEdit() 实例化一个输入框

lineedit =setReadOnly(True) #设置为只读

lineedit.setDragEnabled(True) #设置能接受拖放

lineedit.setMaxLength(5) #设置最大长度

lineedit.selectAll() #全选

lineedit.setFocus() #得到焦点

lineedit.setInputMask("dx") #设置修饰 该输入框必须输入两个字符

punctuationRe = QRegExp(r"[ ,;:.]") #得到一个regexp对象 可用下面的验证

lineedit.setValidator(QRegExpValidator(QRegExp(r"[0-9]+")),self) #设置验证 检验用户输入内容

lineedit.emit(SIGNAL('textChanged(QString)')) 发出 信号 (设置为只读时貌似发不出 没有具体测试)

lineedit.emit(SIGNAL(textEdited(QString)')) 发出 信号 如果设置了验证 该信号在通过验证才能发出 (设置为只读时貌似发不出 没有具体测试)

 

 

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

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))

 

 

 

 

 

 

 

你可能感兴趣的:(控件)