Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
9 / 9 / 0
Регистрация: 13.07.2012
Сообщений: 127
1

QCombobox

01.09.2018, 09:55. Показов 3896. Ответов 6

Author24 — интернет-сервис помощи студентам
Добрый день. Хочу реализовать добавление/изменение элемента БД с помощью дополнительного окна. как создать окно разобрался. Сделал добавление, там было просто. Просто вывести все имеющиеся значения, а Вот с окном для изменения возникли проблемы. Правильно будет, если при открытия окна, все поля будут заполнены значениями i-объекта, то есть где тектовое поле будет заполнено значениями varchar, а где ссылка на другую таблицу, то QCombobox устанавливает "Курсор выбора" на нужный элемент. Проблема: не могу установить "курсор выбора".
Заранее всем спасибо.
Прикладываю отрывок кода
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
QLabel *label = new QLabel(query_form_element.value(rec_form_elemen.indexOf("text")).toString());
QComboBox *comboBox = new QComboBox(this);// создаем объект
comboBox->currentIndexChanged(query_object_element.value(index).toString()); // тут пытаюсь установить курсор
comboBox->setObjectName(query_form_element.value(rec_form_elemen.indexOf("name")).toString()); // к имени элемента присваиваем имя поля
QSqlQueryModel *model_query = new QSqlQueryModel(comboBox); //создаем модель
QSqlQuery query_val; //
query_val.exec(query_form_element.value(rec_form_elemen.indexOf("value")).toString()); // выполмяем запрос
QMessageBox::information(this, "Информация", query_object_element.value(index).toString());
model_query->setQuery(query_val); // присваиваем запрос к модели
comboBox->setModel(model_query); // модель к combobox
ptopLayout->addWidget(label, index, 0);
ptopLayout->addWidget(comboBox, index++, 1);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2018, 09:55
Ответы с готовыми решениями:

QComboBox
Всем привет. Можно ли сделать так, чтобы список (QComboBox) выпадал не вниз а вверх?

QComboBox
Добрый вечер, стоит следующая задача: в окне находится три конопки типа qComboBox.(фото приложил)....

QComboBox
День добрый Задача следующая: имеется два спинбокса и комбобокс. В первый спин вводится значение,...

3 QComboBox и 1 список
Доброго времени суток. Есть задача, получать в программе список всех com-портов и выбирать 3 из...

6
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
01.09.2018, 10:03 2
Попробуй
C++ (Qt)
1
comboBox->setCurrentIndex(index);
Поправился.
1
9 / 9 / 0
Регистрация: 13.07.2012
Сообщений: 127
01.09.2018, 10:25  [ТС] 3
спасибо. получилось.
а как правильно заполнять QCombobox, чтоб можно было выбирать id выбранного элемента, то есть пользователю выводиться наименование, а при выборе возвращал id?
0
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
01.09.2018, 11:32 4
met4ka, при создании QComboBox можешь использовать ->setProperty("id", QVariant(4));

А потом при отлове в слоте получать его
C++ (Qt)
1
2
3
4
5
6
void yourSlot()
{
    QComboBox *cb = qpobject_cast<QComboBox *>(sender());
    if(cb != nullptr)
        int id = cb->property("id").toInt(); //вот и твой id
}
p.s. Если не удалось преобразовать QWidget в QComboBox, то выходите из тела, а не продолжаете делать какие-то действия
1
9 / 9 / 0
Регистрация: 13.07.2012
Сообщений: 127
01.09.2018, 20:39  [ТС] 5
а как использовать
C++ (Qt)
1
->setProperty("id", QVariant(4));
? Ведь у меня Combobox создается с помощью
C++ (Qt)
1
QSqlQueryModel
C++ (Qt)
1
2
3
4
5
6
7
QComboBox *comboBox = new QComboBox(this);
comboBox->setObjectName(query_form_element.value(rec_form_elemen.indexOf("name")).toString());
QSqlQueryModel *model_query = new QSqlQueryModel(comboBox);
QSqlQuery query_val;
query_val.exec(query_form_element.value(rec_form_elemen.indexOf("value")).toString());
model_query->setQuery(query_val);
comboBox->setModel(model_query);
0
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
01.09.2018, 21:49 6
met4ka, QComboBox вы ведь создаете. С этим классом я не работал до этого, но догадываюсь, что достаточным будет
C++ (Qt)
1
2
3
4
QComboBox *comboBox = new QComboBox(this);
comboBox->setProperty("id", QVariant(4));
 
connect(comboBox, SIGNAL(clicked()), инфа о вашем слоте);
А дальше как в моем сообщении
0
59 / 49 / 19
Регистрация: 16.06.2015
Сообщений: 206
03.09.2018, 09:29 7
Попробуй получить табличный индекс записи, выбранной в QComboBox вот так
C++ (Qt)
1
2
QModelIndex index = ui->comboBox->model()->index(ui->comboBox->currentIndex(), 0);
int id = ui->comboBox->model()->data(index).toInt();
0
03.09.2018, 09:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2018, 09:29
Помогаю со студенческими работами здесь

Иконка на QComboBox
Сделал так: QComboBox *comboBox = new QComboBox(this); //ограничил размер ...

QComboBox Grid
Привет всем пытаюсь организовать динамический массив combobox, но никак не получается Статический...

Свой QComboBox
Мне нужно создать свой выпадающий список QComboBox следующего вида: сначала идёт текст, как обычно,...

Доработка QComboBox
Есть класс, наследованный от QComboBox. Есть список значений для выбора. Проблема в том, что часть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru