ฉันสร้างปลั๊กอินสำหรับป้อนฐานข้อมูล Spatialite ด้วยรูปแบบการป้อนข้อมูล มีสองฟิลด์ซึ่งแสดงมิติต่ำสุด / สูงสุดของวัตถุ
ในช่วงเวลาที่ฉันเรียกเครื่องมือวัด ( iface.actionMeasure().trigger()
) ด้วยปุ่มกด "วัด" สองปุ่มให้คลิกส่วนข้อมูลและพิมพ์ค่าด้วยแป้นพิมพ์ของฉันลงในช่อง (QLineEdit)
มีความเป็นไปได้ไหมที่หลังจากฉันคลิกขวา (เสร็จสิ้นการวัด) ด้วยเครื่องมือวัดค่าจะถูกกำหนดโดยอัตโนมัติไปยังฟิลด์ (ต่ำสุดหรือสูงสุด, QLineEdit)?
- เครื่องมือวัดการโทร (ใช้งานได้)
- คลิกซ้าย: เริ่มการวัด
- และ 4. ในครั้งเดียว: คลิกขวาและยอมรับมูลค่ารวมของเครื่องมือวัดลงในฟิลด์ขั้นต่ำ (QLineEdit)
อัปเดต 1:
วันหนึ่งหลังจากถามคำถามนี้ฉันมีความคิดที่จะมีเลเยอร์ความยาวซึ่งฉันสามารถใช้เป็นเครื่องมือวัด (ST_Length (geom)) ข้อดีคือคุณสามารถควบคุมได้อย่างเต็มที่ในการจัดการและรับข้อมูลจากมัน ข้อเสียคือเลเยอร์เพิ่มเติมในโครงการ
เวิร์กโฟลว์อาจเป็น:
คลิกการวัด: สลับแก้ไขเปิดใช้งาน "เพิ่มคุณสมบัติ"
สร้าง linestring ที่แสดงมิติขั้นต่ำของวัตถุ
ยืนยันการเปลี่ยนแปลงคำนวณความยาวของการคืนความยาว (ST_Length (geom)) ยอมรับความยาวกับ QLineEdit
ปิดกล่องโต้ตอบและลบการคืนค่า (ลบจาก)
แต่คำถามที่แท้จริงของฉันยังคงอยู่ มีวิธีรับค่าระยะทางจากเครื่องมือวัดโดยตรงหรือไม่
อัปเดต 2:
ด้วยความช่วยเหลือถ้าจาคอบฉันสามารถปรับปรุง QLineEdit ของฉันด้วยค่ารวมของเครื่องมือวัดจนกว่าฉันจะปิดเครื่องมือวัด จากนั้นตั้งค่าเป็น '0,000 m' ฉันแก้ไขปัญหานี้โดยใช้สิ่งนี้:
def text_changed(str_measure):
if str_measure == '0,000 m':
pass
else:
self.min.setText(str_measure)
มันใช้งานได้ แต่ฉันไม่รู้ว่านี่เป็นวิธีแก้ปัญหาที่เหมาะสมหรือไม่