`
duyouhua1214
  • 浏览: 236274 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

限定QLineEdit只接收某一范围的整数

    博客分类:
  • QT
 
阅读更多

记不清是第几次看到有人问这个问题了:"如何限定QLineEdit只接收某一范围的整数"

方法一

不使用 QLineEdit,因为 QSpinBox 提供了我们和整数打交道需要的功能,直接使用 QSpinBox 是最简单的。

可能有人想:我不想要 QSpinBox 提供的那两个按钮,我不想让用户修改数据,...

这些都容易解决,具体看QSpinBox 的 Manual,或者看下面的例子

方法二

这个可能比上一个更容易想到,用 QIntValidator 。但说实话,这个没有前面的方法好用。

比如:有人抱怨,编辑结束时它不会自动 fixup 无效的数据(例如,范围为100~200,输入50,它就显示50,不会修正为100)

当然,这些问题都可以解决,子类化 QValidator 就行了。具体看QValidator的Manual 或下面的例子

例子

  • PyQt4 4.7.4 (注意:PySide 0.4.2 有bug)

  • Python2.7 + Qt 4.7.0

分别采用上面的两种方式(QSpinBox 和 QLineEdit+Validator),实现大致类似的结果(优劣自己评判吧)

截图

代码

#!/usr/bin/env python




#--*-- coding:utf-8 --*--




# (C) dbzhang800 2010




import

 sys




try

:


    raise

 ImportError




    from

 PySide

 import

 QtCore

, QtGui




except

 ImportError

:


    import

 sip




    sip

.setapi

("

QString

"

, 2

)


    from

 PyQt4

 import

 QtCore

, QtGui





class

 Validator

(QtGui

.QIntValidator

):


    def

 __init__

(self

, minimun

, maximum

, parent

):


        super

(Validator

, self

).__init__

(minimun

, maximum

, parent

)



    def

 fixup

(self

, input

): # 



not work



 in PySide 0.4.2 




        return

 str

(self

.bottom

())



class

 Dialog

(QtGui

.QDialog

):


    def

 __init__

(self

, parent

=None

):


        super

(Dialog

, self

).__init__

(parent

)



        self

.lineEdit

 = QtGui

.QLineEdit

()


        self

.validator

 = Validator

(100

,200

, self

)


        self

.lineEdit

.setValidator

(self

.validator

)


        self

.spinBox

 = QtGui

.QSpinBox

()


        self

.spinBox

.setRange

(100

, 200

)


        self

.spinBox

.setButtonSymbols

(QtGui

.QAbstractSpinBox

.NoButtons

)



        vbox

 = QtGui

.QVBoxLayout

(self

)


        vbox

.addWidget

(self

.lineEdit

)


        vbox

.addWidget

(self

.spinBox

)


        


        self

.setWindowTitle

('

Qt Validator

'

)



if

 __name__

 == '

__main__

'

:


    app

 = QtGui

.QApplication

(sys

.argv

)


    dlg

 = Dialog

()


    dlg

.show

()


    sys

.exit

(app

.exec_

())

来源:http://hi.baidu.com/cyclone/blog/item/663709236315e95e925807d1.html

 

分享到:
评论

相关推荐

    QLineEdit只能输入浮点数

    通过这种方式,我们创建了一个只允许输入浮点数的`QLineEdit`。当用户尝试输入非数字字符或者超出浮点数范围的值时,`invalidInputDetected()`信号会被发出,可以连接该信号来执行相应的错误处理或提示。 在实际...

    QlineEdit重写,可以设置占位文本颜色等

    4. **显示文本随光标移动而移动**:这是QLineEdit的基本行为,但如果我们想要自定义这一过程,比如添加动画效果,可以在`void QLineEdit::cursorMoveEvent(QCursorMoveEvent *event)`事件处理函数中进行处理。...

    一个使用QLineEdit的示例代码,创建了一个简单的登录界面,包括用户名、密码和登录按钮,以及一些输入检查和提示功能:

    QLineEdit是一个用于接收单行文本输入的小部件。它可以显示和编辑文本,支持光标移动、文本选择以及插入和删除操作。在登录界面中,通常会用到两个QLineEdit,一个用于输入用户名,另一个用于输入密码。 2. **创建...

    QLineEdit制作的滚动的字幕

    在本文中,我们将深入探讨如何使用Qt库中的QLineEdit组件创建一个滚动的字幕效果。QLineEdit是Qt提供的一种用于输入单行文本的控件,通常用于简单的用户输入。然而,通过重写其内部功能,我们可以扩展其能力,实现...

    QLineEdit_click_eventFilter

    在Qt库中,`QLineEdit` 是一个常用的控件,用于接收用户输入的单行文本。`QLineEdit_Click_eventFilter` 这个话题涉及到的是如何利用`eventFilter`机制来捕获并处理`QLineEdit`的鼠标点击事件。在GUI编程中,事件...

    重写QlineEdit,可以设置占位文本颜色示例

    通过以上步骤,你就可以创建一个具有自定义占位文本颜色、选中背景色和光标闪烁效果的QLineEdit了。这将使你的Qt界面更加个性化,同时提供更好的用户体验。在实际开发中,你可能还需要根据项目需求进行进一步的定制...

    Qt LineEdit输入数值限制实例

    首先,`QLineEdit`是Qt库中的一个核心组件,它用于接收用户输入的单行文本。然而,原始的`QLineEdit`并不具备自动验证输入数据的能力,所以我们需要借助`QValidator`类来增强其功能。`QValidator`提供了一种机制,...

    QLineEdit_click_subType

    在Qt库中,QLineEdit是一个常用的控件,用于显示和编辑单行文本。当我们需要对QLineEdit进行更精细的操作,比如响应用户的鼠标点击事件时,就需要进行一定程度的自定义。`QLineEdit_click_subType`就是一个这样的...

    Qt——QLineEdit使用总结 - 去冰三分糖 - 博客园1

    在Qt编程中,QLineEdit是一个非常重要的控件,它用于接收用户的单行文本输入。本文主要总结了QLineEdit的一些核心功能和使用方法。 首先,`setPlaceholderText()`函数用于设置输入框的提示文字,当用户尚未输入内容...

    Qt:QLineEdit

    创建一个QLineEdit对象非常简单,可以使用构造函数直接创建,然后将其添加到布局管理器中,或者作为其他父组件的一部分。例如: ```cpp QLineEdit *lineEdit = new QLineEdit(parent); ``` 在UI布局中,你可以使用...

    QT虚拟键盘,实现根据不同QLineEdit限制不同键盘。

    在本项目中,我们聚焦于一个特定的功能——实现根据QLineEdit输入框的不同,动态显示不同虚拟键盘。 QLineEdit是QT库中的一个控件,它用于接受用户输入的单行文本。在许多应用中,特别是那些涉及到触摸屏操作的设备...

    QT数字软键盘,包括QLineEdit弹出

    这个例子是关于如何利用Qt框架创建一个简单的数字软键盘,并与QLineEdit组件协同工作,使得用户能够通过点击屏幕上的数字键进行输入。QLineEdit是Qt中的一个类,用于显示单行文本输入,它通常与键盘交互,但在这个...

    Qt例程源代码QLineEdit.7z

    Qt例程源代码QLineEdit.7z

    触屏下用数字按钮对两个QLineEdit对象分别进行输入

    然而,当有两个或多个QLineEdit对象并排放置时,如何区分用户是在哪个QLineEdit中进行输入就成为一个问题。在触屏环境下,没有鼠标焦点的概念,因此传统的焦点机制可能会变得不那么直观。本文将深入探讨如何在触屏...

    QLineEdit.7z

    QLineEdit是Qt库中的一个核心组件,用于在用户界面中接收单行文本输入。这个组件在GUI应用程序中非常常见,例如在登录界面中输入用户名或密码,搜索框中输入查询关键词等场景。QLineEdit提供了丰富的功能,如文本...

    QLineEdit(单行文本框)

    以下是如何使用 `QLineEdit` 的说明和一个简单的示例: + **QLineEdit 的基本用法:** 1. **创建 QLineEdit 对象:** ```cpp #include <QLineEdit> ``` 2. **初始化 QLineEdit:** ```cpp QLineEdit *...

    在pyqt5中QLineEdit里面的内容回车发送的实例

    在PyQt5中QLineEdit里面的内容回车发送的方法是和PyQt4中不同的,主要是信号槽的写法的改变导致的。 具体不同如下: 在PyQt4中,我们要进行回车发送的时候,一般这么写: self.connect(self.lineEdit, SIGNAL...

    QT 学习 实例 QLineEdit QLCDNumber

    QT 学习 实例 QLineEdit QLCDNumb demonstrates the many ways that QLineEdit can be used use QLCDNumber to display a number with LCD-like digits

    QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数

    QTextEdit提供了一个富文本编辑器,可以处理复杂的格式,如段落、字体样式、链接等,而QLineEdit则是一个简单的单行文本输入框。在某些场景下,我们可能希望QTextEdit具有QLineEdit的功能,比如设置占位符文本...

    Qt数字软键盘 QLineEdit弹出

    QLineEdit是Qt库中一个非常重要的组件,它用于接收用户输入的单行文本。在某些场景下,如移动设备或者触摸屏应用中,我们可能需要提供一个数字软键盘来替代系统默认的全键盘,以提高用户输入数字的效率和便利性。...

Global site tag (gtag.js) - Google Analytics