qt qpixmap save一直返回 false_手把手针对本学校系统建立桌面级集成平台(二)-QT控件基础...

本文介绍了Qt Designer中的基础控件,如label、pushbutton、lineEdit、checkBox和comboBox,结合登录页面实例展示了它们的功能和用法。label用于显示信息,pushbutton触发功能,lineEdit支持文本输入,checkBox是两状态切换,comboBox提供下拉选项。
摘要由CSDN通过智能技术生成

本节主要对Qt Designer中的一些基础控件进行介绍,以满足界面设计的需要。这里首先从一个登录页面的例子出发。

c790d4e48472c22a7515ff20e36c1a30.png

此页面内一共包含五种元素,下面挨个进行介绍。注意为了艺术效果,只拿出来每个控件最常用的功能进行介绍,其实很多功能大家都是有的。

1.lable-没有感情的输出工具人

lable这个类型一般只有一个用处,显示信息。相当于c++的DOS界面,可以把结果或者你想要表达的文字输出在上面。这个信息可以在QtDesigner中就给定默认值,也可以通过程序后期修改。

child.child.label.setText('遭遇异常,请重启软件')    #设置label内容
child.child.label.text()    #读取label内容
#注意这里的child.child只是因为我在命名中这么命的
#第一个child只是名字而无child的意义(其实不太符合命名规范?)

另外,你以为label只能输出文字?并不是!图片也可以。

jpg = QtGui.QPixmap(pic_path).scaled(child.child.label_2.width(), child.child.label_2.height())
#pic_path为图片路径
child.child.label_2.setPixmap(jpg)

2.pushbutton-等待宠幸的孤独者

pushbutton可以说界面触发功能中最常用的元素,它会一直等待你。如果你不在意他,他便默不作声,但是如果你轻轻的一点:

self.ui.pushButton.clicked.connect(lambda: self.begin_game())

然后屁颠屁颠地去喊begin_game()函数接受宠幸?

等等!!pushbutton的真实身份原来只是一个跑腿的人?那真是一个悲伤的故事。不过作为中间人的他也配拥有姓名:

child.child.pushButton.setText('来啊,点我啊')    #设置pushbutton内容
child.child.pushButton.text()    #读取pushbutton内容

但是一般他的名字在QtDesigner中出生的时候就已经被安排的明明白白,且永远背负着它前行。

3.lineEdit-时刻警惕的逢迎者

如果说控件也有0/1之分,那么label是个1,pushbutton是个小0,lineEdit则可带来更加丰富地输入输出属性当之无愧的可0可1,其1的属性弱于label(输出形式受限),但是0的属性远强于pushbutton(不仅仅是click信号)。

首先系统可以通过它获取和显示字符:

child.child.lineEdit.text())    #获取文字
child.child.lineEdit.setText('对我输入')    #输出文字
child.child.lineEdit.clear()    #清空文字

作为一个逢迎者它会时刻准备着:

child.child.lineEdit.textChanged.connect(lambda: self.begin_game())
#当文字内容被改变时触发函数

等下?有时候它还会藏起来,作为密码不敢见人?

def vis_pass(self):
    if self.child.checkBox.isChecked():
        self.child.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)   #密码模式
    else:
        self.child.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Normal)    #正常模式

说到checkBox,那我们先跳过4直接先讲讲5。

5.checkBox-固执的两面派

checkBox作为组件,只有两个状态,并且只可以在这两个状态中来回变换,那就是0和1。嗯......准确的说是勾选或未被勾选。

self.child.checkBox.setChecked(True)    #啊,我被勾选啦
self.child.checkBox.setChecked(False)    #啊,我被取消啦
self.child.checkBox.setChecked(True)    #啊,我又被勾选啦
#啊......

那么如何判断有没有被选中呢?

self.child.checkBox.isChecked()
#返回True,被勾选
#返回False,未被勾选

另外,它也可以在状态改变时直接触发,这样就可以实现当勾上的时候隐藏密码,不勾的时候显示密码。

self.chilid.checkBox.stateChanged.connect(lambda: self.vis_pass())
#vis_pass函数就是上文lineEdit中的函数

4.comboBox-有限的多面者

comboBox就是俗称的下拉选项框。其可以提供多个备胎..啊不!被选。

self.child.comboBox.addItem('我是0')
self.child.comboBox.addItem('我是1')
self.child.comboBox.addItem('我是2')
#...

甚至可以增加不可选的备选项

self.child.comboBox.addItem('...请选择')
index = self.child.comboBox.model().index(0, 0)
#index(i, 0),i代表的是第几个选项
self.child.comboBox.model().setData(index, 0, QtCore.Qt.UserRole - 1)

它可以得知你选了哪个,也可以决定要选哪个

self.child.comboBox.setCurrentIndex(0)      #选择第一个
self.child.comboBox_2.currentIndex()      #返回当前选了第几个

同时它还能监控被改变状态,同时被改变的时候连接其他函数

self.child.comboBox.currentIndexChanged.connect(lambda: self.com1_c())

最基本的控件就这些,对于tableWidget和radiobutton会在接下来中会随着功能讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值