是否可以轻松制作包含QInputDialog
多个元素的QComboBox
?或者,提示弹出窗口/对话框的最可行方法是什么,可能有不同的字段(等等2 x QComboBox
+ 1 x QLineEdit
)?
答案 0 :(得分:5)
PS:表格非常有用。一旦开始进行移动或嵌入式开发,您可能需要开始使用QML和QML表单(Qt Quick Controls)。
为了在线描述示例,表单很难并且难以展示,但是我最近工作的大多数大型项目都有一些表格或QML。
希望有所帮助。
QDialog * d = new QDialog();
QVBoxLayout * vbox = new QVBoxLayout();
QComboBox * comboBoxA = new QComboBox();
comboBoxA->addItems(QStringList() << "A" << "B" << "C");
QComboBox * comboBoxB = new QComboBox();
comboBoxB->addItems(QStringList() << "A" << "B" << "C");
QLineEdit * lineEditA = new QLineEdit();
QDialogButtonBox * buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel);
QObject::connect(buttonBox, SIGNAL(accepted()), d, SLOT(accept()));
QObject::connect(buttonBox, SIGNAL(rejected()), d, SLOT(reject()));
vbox->addWidget(comboBoxA);
vbox->addWidget(comboBoxB);
vbox->addWidget(lineEditA);
vbox->addWidget(buttonBox);
d->setLayout(vbox);
int result = d->exec();
if(result == QDialog::Accepted)
{
// handle values from d
qDebug() << "The user clicked:"
<< "ComboBoxA" << comboBoxA->currentText()
<< "ComboBoxB" << comboBoxB->currentText()
<< "LineEditA" << lineEditA->text();
}
答案 1 :(得分:0)
在Qt Creator中右键单击您的项目。
点击Add New...
。
点击Qt > Qt Designer Form Class
。
在Qt Designer Form Class
向导中,单击Dialog with Buttons
,单击“确定”,然后为其命名,然后单击“完成”。
现在可以根据需要将任意数量的组合框和行编辑拖放到视图中。
将对象名称(在右侧的属性编辑器中)更改为有意义的内容。
对于组合框,双击它们并添加要在下拉列表中显示的项目。
现在,当您想要使用这些元素中的一个值时,您可以执行以下操作:
Dialog d;
int result = d.exec();// Show it as a modal dialog
if(result == QDialog::Accepted)
{
// handle values from d
qDebug() << "The user clicked:"
<< "ComboBoxA" << d.getComboBoxAText()
<< "ComboBoxB" << d.getComboBoxBText()
<< "LineEditA" << d.getLineEditAText();
}
但请确保在Dialog类中添加一些公共函数:
QString Dialog::getComboBoxAText()
{
return ui->comboBoxA()->currentText();
}
希望有所帮助。