【发布时间】:2016-02-12 20:12:59
【问题描述】:
我有一个包含大约 5-6 个项目的下拉菜单。
当我在 ComboBox 中选择特定选项时,我希望其他小部件出现在同一窗口中。例如:当我在 ComboBox 中选择“1-Standard”时,acc_ui 中定义的小部件必须弹出等等。
这是我试过的代码:
require 'Qt'
class Auth < Qt::Widget
slots 'slotFunctionChanged(int)'
def initialize(parent=nil)
super(parent)
setWindowTitle("Action");
setFixedSize 750,530
function_ui
show
end
def function_ui
@funLabel = Qt::Label.new "Func: ", self
@funLabel.setFont Qt::Font.new("Times New Roman", 14)
combo = Qt::ComboBox.new self
combo.setFont Qt::Font.new("Times New Roman", 12 )
combo.addItem "1- Standard"
combo.addItem "2- Custom"
combo.addItem "3- Non-custom"
combo.addItem "4- Non-Standard"
combo.addItem "5- Plastic"
connect combo, SIGNAL('activated(int)'), self, SLOT('slotFunctionChanged(int)')
combo.resize 170,20
combo.move 170,100
@funLabel.move 95,100
end
def slotFunctionChanged(index)
case index
when 0
acc_ui()
when 1
store_ui()
end
end
def acc_ui
@accLineedit = Qt::Lineedit.new(self)
@accLineedit.setFont Qt::Font.new("Times New Roman", 12)
@accLabel = Qt::Label.new "Acc: ", self
@accLabel.setFont Qt::Font.new("Times New Roman", 14)
@accLabel.move 95,185
@accLineedit.resize 170,20
@accLineedit.move 170,185
end
def store_ui
@storeLineedit = Qt::Lineedit.new(self)
@storeLineedit.setFont Qt::Font.new("Times New Roman", 12)
@storeLabel = Qt::Label.new "Store: ", self
@storeLabel.setFont Qt::Font.new("Times New Roman", 14)
@storeLabel.move 120,210
@storeLineedit.resize 140,20
@storeLineedit.move 170,210
end
end
app = Qt::Application.new(ARGV)
widget = Auth.new
widget.show
app.exec
【问题讨论】:
-
有什么问题?我们需要描述它没有正确执行的操作。请阅读“How to Ask”。此外,这是演示问题所需的最少代码吗?如果没有,请减少它。大量代码会减慢我们帮助您的能力,并占用我们帮助他人的时间。 minimal reproducible example.
-
对不起。这是我第一次发帖,下次会记住这一点。我的问题是:在 case 语句中,当我尝试调用我单独定义的方法时,它没有被调用。