У меня есть выпадающее меню с 5-6 элементами в нем.Виджет должен показать или скрыть на основе опции, выбранной в выпадающем меню
Я хочу, чтобы другие виджеты отображались в том же окне, когда я выбираю конкретный параметр в ComboBox. Например: когда я выбрал «1-Стандарт» в ComboBox, виджет, определенный в 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
В чем проблема? Нам нужно описание того, что он делает неправильно. Пожалуйста, прочитайте «[ask]». Кроме того, это минимальный код, необходимый для демонстрации проблемы? Если нет, уменьшите его. Много кода замедляет нашу способность помочь вам и забирает наше время для помощи другим. [Mcve]. –
Извините за это. Это был первый раз, когда я отправлял сообщения, это будет помнить со следующего раза. Моя проблема здесь: Внутри оператора case, когда я пытаюсь вызвать метод, который я определил отдельно, он не вызывается. – topjay