Можно ли легко сделать QInputDialog
с несколькими элементами QComboBox
? В качестве альтернативы, самый возможный способ вызвать всплывающее окно/диалог с возможностью разных полей (и т. Д. 2 x QComboBox
+ 1 x QLineEdit
)?QInputDialog с несколькими полями
ответ
TADA: Как сделать это немного сложнее всего в коде. И главная причина, по которой это немного сложнее, заключается в том, что вы должны выполнять все макетирование вручную, с компиляцией между каждой итерацией.
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();
}
Щелкните правой кнопкой мыши на свой проект в 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();
}
Но убедитесь, что вы добавили некоторые государственные функции в свой класс диалогового окна:
QString Dialog::getComboBoxAText()
{
return ui->comboBoxA()->currentText();
}
Надеюсь, что помогает.
Благодарим вас за ответ @phyatt. Однако я надеялся найти решение только с использованием кода, а не с Qt Creator. –
- 1. QInputDialog с многострочным текстом
- 2. подзапросов с несколькими полями
- 3. Индекс с несколькими полями или несколькими индексами
- 4. Django - управление несколькими страницами с несколькими полями
- 5. Индексы MySQL с несколькими полями
- 6. Grails sortableColumn с несколькими полями
- 7. grafana plotting с несколькими полями
- 8. NSScrollView с несколькими текстовыми полями
- 9. Группировка с несколькими полями Storm
- 10. JSON строка с несколькими полями
- 11. XQUERY с несколькими поисковыми полями
- 12. mongodb sort с несколькими полями
- 13. ListView с несколькими полями edittext
- 14. POST UIImage с несколькими полями
- 15. Проверка JQuery с несколькими полями
- 16. Угловое выражение с несколькими полями
- 17. представления формы с несколькими полями
- 18. Агрегация Pymongo с несколькими полями
- 19. Использование options_from_collection_for_select с несколькими полями
- 20. sql с несколькими полями requried
- 21. Поиск PHP с несколькими полями
- 22. Kibana: тип с несколькими полями
- 23. Поиск с несколькими полями выбора
- 24. Onchange с несколькими полями ввода
- 25. выразить app.get с несколькими полями
- 26. поиск Elasticsearch с несколькими полями
- 27. Построить слизняк с несколькими полями
- 28. mySQL - подзапрос с несколькими полями
- 29. Lucene Queryparser с несколькими полями
- 30. поиск Php с несколькими полями
Это хорошо, но все явные распределения кучи не нужны. * Все * виджетов могут быть локальными автоматическими переменными. 'QDialog d; QVBoxLayout vbox (&d); QComboBox comboA, comboB; 'и т. Д. –