我在Mac OSX上使用QT 5.5。我想以编程方式创建几个下拉菜单小部件,这些小部件将具有可以更改某些变量值的各种选项。
例如,我会有下拉菜单1代表变量"命令"有: - 问 - W - E. - R. 通过选择任何一个,然后它将使命令= Q,或命令= W.这样,我可以发送命令到另一个程序知道我发送Q或W。
我当前的主窗口看起来像这样:
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 :(得分: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
}
如果要以不同方式选择组合框项目文本,另一个选项是为组合框项目设置itemData
。并通过ComboBox的currentData
属性将它们放入您的插槽中。