• 8271阅读
  • 5回复

关于Qt对话框的问题(QLineEdit动态) [复制链接]

上一主题 下一主题
离线土匪老黑
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-05
— 本帖被 XChinux 执行加亮操作(2010-09-05) —
两个可实现用户输入的QLineEdit控件!
如何实现当用户在控件1中输入一个角度时,比如30°
在另一个控件中直接显示它的补角 150°。
这种动态的可以实现么?在构造函数中实现么?
谢谢啦
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-05
可以实现,而且实现起来非常的简单。

建议先看看 《C++ GUI Qt4编程》一书,如果暂时看不下去Qt 自带的manual和exmaple的话(当然用Qt的话,这是必须要看的,可能还需要认真地研读)
离线土匪老黑
只看该作者 2楼 发表于: 2010-09-05
好的,谢谢db兄!
离线土匪老黑
只看该作者 3楼 发表于: 2010-09-05
能否给个例子啊!呵呵1
离线XChinux

只看该作者 4楼 发表于: 2010-09-05
最简单的:
先连接:connect(edit1, SIGNAL(editingFinished(()), this, SLOT(on_edit1_finished()));

然后实现:
void xxxx::on_edit1_finished()
{
    // 计算过程
    edit2->setText(edit1->text());
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线dbzhang800

只看该作者 5楼 发表于: 2010-09-05
引用第3楼土匪老黑于2010-09-05 21:15发表的  :
能否给个例子啊!呵呵1


给你一个完整的可运行的例子,只不过是python+Qt写的,运行的话,需要安装PyQt4或PySide

因为你处理的整数,建议用QSpinBox。如果带小数,可以考虑QDoubleSpinBox。

为了实现 QLineEdit 的效果,程序中已经将SpinBox两个微调按钮隐藏(尽管个人认为你可能需要微调按钮)。

另外,程序用的 valueChanged 信号,你可能会想用 editingFinished信号

还是那句话,建议先看点资料,最好是manual和example

  1. #!/usr/bin/env python
  2. #--*-- coding:utf-8 --*--
  3. '''
  4. Copyright (C) 2010 dbzhang800
  5. '''
  6. import sys
  7. try:
  8.     from PySide.QtGui import *
  9. except ImportError:
  10.     from PyQt4.QtGui import *
  11. class Widget(QDialog):
  12.     def __init__(self,  parent=None):
  13.         super(Widget,  self).__init__(parent)
  14.         self.spinBox1 = QSpinBox(self)
  15.         self.spinBox1.setRange(0, 180)
  16.         self.spinBox1.setSuffix(u" °")
  17.         self.spinBox1.setButtonSymbols(QSpinBox.NoButtons)
  18.         self.spinBox2 = QSpinBox(self)
  19.         self.spinBox2.setRange(0, 180)
  20.         self.spinBox2.setSuffix(u" °")
  21.         self.spinBox2.setButtonSymbols(QSpinBox.NoButtons)
  22.         self.spinBox2.setValue(180-self.spinBox1.value())
  23.         vbox = QFormLayout(self)
  24.         vbox.addRow("Angle1", self.spinBox1)
  25.         vbox.addRow("Angle2", self.spinBox2)
  26.         self.setLayout(vbox)
  27.         self.spinBox1.valueChanged[int].connect(self.onValueChanged)
  28.         self.spinBox2.valueChanged[int].connect(self.onValueChanged)
  29.        
  30.     def onValueChanged(self,  v):
  31.         if self.sender()==self.spinBox1:
  32.             self.spinBox2.setValue(180-v)
  33.         else:
  34.             self.spinBox1.setValue(180-v)
  35. if __name__ == '__main__':
  36.     app = QApplication(sys.argv)
  37.     w = Widget()
  38.     w.show()
  39.     sys.exit(app.exec_())

快速回复
限100 字节
 
上一个 下一个