You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**An update:** I never managed to use QIntValidator nor QRegExpValidator directly on self.boundwidgets['flatenr'] with setValidator as e.g. self.boundwidgets['flatenr'].setValidator(validator).
#475
Open
PeymanSmaili opened this issue
Jan 5, 2021
· 0 comments
An update: I never managed to use QIntValidator nor QRegExpValidator directly on self.boundwidgets['flatenr'] with setValidator as e.g. self.boundwidgets['flatenr'].setValidator(validator). My "solution" (workaround): I create a new QLineEdit called flatenr and display it directly above the original field (created in the Config Manager) and then I save the value from this QLineEdit as the attribute value for the self.boundwidgets['flatenr']. In addition I added "save last value".
With "my own" QLineEdit QIntValidator and QRegExpValidator works. However, I would prefer to be able to use these directly on self.boundwidgets['...']. Is it possible? (It's time consuming placing the QLineEdit directly on the self.boundwidgets['...']....)
My workaround-code:
from roam.api import FeatureForm, RoamEvents, utils
from PyQt4.QtGui import QRegExpValidator, QLineEdit, QDesktopWidget
from PyQt4.QtCore import QRegExp, QSettings
class Form(FeatureForm):
def __init__(self, *args, **kwargs):
super(Form, self).__init__(*args, **kwargs)
def uisetup(self):
# Getting the screen size
screen = QDesktopWidget().availableGeometry() # returns the usable rectangle of the screen
wSize = screen.width() # returns the usable screen witdh
# Creating a new lineedit-widget performing regexp to ensure 4 digits flatenr (between 1000 and 9999)
global flatenr
flatenr = QLineEdit(self)
# Display the QLineEdit above self.boundwidgets['flatenr'], depends on PC or tablet (with 150 % text size) screen size
flatenr.setGeometry(169.5,19,wSize-537,42) #vertical 26 on PC, sets the widt to available screen width
# Make the QLineEdit frame transparent (the frame of the text widget self.boundwidgets['flatenr'] will be visible)
flatenr.setStyleSheet("QLineEdit{border: 1px transparent}")
# Change the frame color if the linedit is selcted
flatenr.setStyleSheet("QLineEdit{selection-border: 2px solid #5CADFF; selection-border-radius: 2px}")
# Only allow 4 digits flatenr not starting with a zero
rx = QRegExp('^[1-9]\d{3}$')
validator = QRegExpValidator(rx)
flatenr.setValidator(validator)
flatenr.textChanged.connect(self.handler1)
...
def handler1(self,value):
# Save the value from QLineEdit as the attribute flatenr in the shapefile
self.boundwidgets['flatenr'].setvalue(flatenr.text())
# Save value from QLineEdit (just like "action: save last value" in the config manager)
settings = QSettings("setting.set")
text = flatenr.text()
settings.setValue("text", text)
...
def load(self, feature, layers, values):
# Restore value of QLineEdit (show the last saved value)
settings = QSettings("setting.set")
text = settings.value("text", "")
flatenr.setText(str(text))
# Set the value of the attribute flatenr = the value in the QLineEdit
self.boundwidgets['flatenr'].setvalue(flatenr.text())
pass
An update: I never managed to use QIntValidator nor QRegExpValidator directly on self.boundwidgets['flatenr'] with setValidator as e.g. self.boundwidgets['flatenr'].setValidator(validator).
My "solution" (workaround): I create a new QLineEdit called flatenr and display it directly above the original field (created in the Config Manager) and then I save the value from this QLineEdit as the attribute value for the self.boundwidgets['flatenr']. In addition I added "save last value".
With "my own" QLineEdit QIntValidator and QRegExpValidator works. However, I would prefer to be able to use these directly on self.boundwidgets['...']. Is it possible? (It's time consuming placing the QLineEdit directly on the self.boundwidgets['...']....)
My workaround-code:
Originally posted by @9ls1 in #239 (comment)
The text was updated successfully, but these errors were encountered: