2016-01-14 4 views
2

Я использую QT 5.5 с Mac OSX. Я хочу сделать несколько виджетов меню, которые будут иметь различные варианты, которые могут изменять значения определенных переменных.QT Создание виджета меню выпадающего меню

Так, например, я бы выпадающее меню 1 представляют собой «команда» переменную имеет: - Q - W - E - R И, выбирая, какой бы ни один, то он сделал бы команду = Q, или команда = W. Так что путь, я могу послать команду на другую программу, зная, что я послал Q, или W.

Мой текущий MainWindow выглядит примерно так:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
//******* Set up 
ui->setupUi(this); 
ui->centralWidget->setLayout(new QVBoxLayout); 

// 01: Creation of Console 
console = new Console; 
console->setEnabled(false); 

/************** Adding Widgets *********************/ 
//creation and attribution of slider 
slider = new QSlider(); 
slider->resize(255, 20); 
slider->setOrientation(Qt::Horizontal); 
slider->setRange(0, 255); //0-255 is range we can read 

//creation and attribution of the lcd 
lcd = new QLCDNumber(); 
lcd->setSegmentStyle(QLCDNumber::Flat); 
lcd->resize(255, 50); 

//03: Adding widgets to layout 
//add console as a widget to the main widget 
//layout with slider and lcd underneath console 
ui->centralWidget->layout()->addWidget(console); 
ui->centralWidget->layout()->addWidget(slider); 
ui->centralWidget->layout()->addWidget(lcd); 

////////I WANT TO ADD VARIOUS DROPDOWN MENUS HERE NEXT TO EACH OTHER//////// 

/************** Connection Events ***********************/ 
.... 

}

+0

Выпадающее меню, вы имеете в виду ComboBox? –

ответ

2

Предполагая, что вы хотите ComboBox, вот как вы можете это сделать:

QStringList commands = { "Q", "W", "E", "R" }; 
QComboBox* combo = new QComboBox(this); 
combo->addItems(commands); 
connect(combo, &QComboBox::currentTextChanged, this, &MainWindow::commandChanged); 

Теперь вы получите текст команды, когда пользователь изменяет элемент поле со списком. и вы можете написать свой код на основе этого.

MainWindow::commandChanged(const QString& command_text) 
{ 
    //Do the logic based on command_text 
} 

Другой вариант, если вы хотите выбрать тексты запись COMBOBOX по-разному, что вы установили itemData для элементов ComboBox. и получить их в свой слот currentData свойство ComboBox.