QT以编程方式制作下拉菜单小部件

时间:2016-01-14 03:01:27

标签: c++ qt drop-down-menu widget

我在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 ***********************/
....

}

1 个答案:

答案 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属性将它们放入您的插槽中。