小部件应根据下拉菜单中选择的选项显示或隐藏
Widget should show or hide based on option chosen in drop down menu
我有一个下拉菜单,里面有大约 5-6 个项目。
当我 select ComboBox 中的特定选项时,我希望其他小部件出现在同一个 window 中。例如:当我在ComboBox中选择“1-Standard”时,acc_ui
中定义的widget必须弹出等等。
这是我试过的代码:
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
- 将所有代码从
acc_ui
和 store_ui
移动到 function_ui
- in
function_ui
:将show
方法应用到所有默认显示的小部件,将hide
方法应用到所有默认隐藏的小部件
- 在
acc_ui
和store_ui
中:只使用show
和hide
方法让小部件随心所欲地出现和消失
我有一个下拉菜单,里面有大约 5-6 个项目。
当我 select ComboBox 中的特定选项时,我希望其他小部件出现在同一个 window 中。例如:当我在ComboBox中选择“1-Standard”时,acc_ui
中定义的widget必须弹出等等。
这是我试过的代码:
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
- 将所有代码从
acc_ui
和store_ui
移动到function_ui
- in
function_ui
:将show
方法应用到所有默认显示的小部件,将hide
方法应用到所有默认隐藏的小部件 - 在
acc_ui
和store_ui
中:只使用show
和hide
方法让小部件随心所欲地出现和消失