Название: Редактируемый QComboBox без кнопки со стрелкой Отправлено: radislav72 от Сентябрь 08, 2010, 08:13 Возникла специфическая задача, и не знаю можно ли так сделать.
Можно ли программно изменять комбобокс так, чтобы убирать/ снова включать отображение стрелки, по которой раскрывается выпадающий список. Комбобокс редактируемый, т.е. он временно превращается по функциональности в QLineEdit. Если так нельзя, то придется создавать два виджета: комбобокс и лайнедит. А хотелось бы спростить и пользовать один и тот же виджет. Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: crossly от Сентябрь 08, 2010, 09:03 а для чего убирать стрелку??
Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: SABROG от Сентябрь 08, 2010, 09:12 Я иногда вызываю список через Alt+↓ Если заблокировать только кнопку, то это ничего не даст. Вообще в QComboBox стрелка не является полноценной кнопкой, она рисуется. Стандартных средств скрыть стрелку нет.
Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: radislav72 от Сентябрь 08, 2010, 09:44 а для чего убирать стрелку?? Ох... говорю: специфическое задание :) Есть в форме настраиваемые поля, которые могут иметь, а могут не иметь набор неких (тоже настраиваемых) стандартных значений. Посему при отображении формы динамически создается набор виджетов-редактируемых комбобоксов, которые в списке содержат стандартные значения. И все вроде-бы хорошо, но при отсутствии станд. значений стрелка есть, а списка, соответственно, нет. Для меня в етом проблемы нет и небыло, думал что все ОК, отработано, проверено... Но для не очень умных теток, работающих с прогой оказалось, тут зарыта проблема: они видят стрелку комбобокса, сразу срабатывает инстинкт, и они начинают жать на нее... Но списка-то нет, и он не открывается, что бросает упомянутых теток в ступор, и они начинают звонить в службу поддержки: "программа не работает"...Я иногда вызываю список через Alt+↓ Если заблокировать только кнопку, то это ничего не даст. Вообще в QComboBox стрелка не является полноценной кнопкой, она рисуется. Стандартных средств скрыть стрелку нет. Спасибо за ответ, так и думал. Придется генерить не одни комбобоксы, а комбобоксы с лайнедитамиНазвание: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: merke от Сентябрь 08, 2010, 10:20 Воткни QLineEdit и когда тебе нужно показывай QListWidget. Думаю ты мою идею понял? будет тебе свой личный комбобокс без стрелочки.
Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: SABROG от Сентябрь 08, 2010, 11:18 По-моему достаточно добавить элемент в список с названием типа "Нет стандартных значений" и сделать его не выбираемым. При открытии будут сразу понимать.
Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: radislav72 от Сентябрь 08, 2010, 13:04 По-моему достаточно добавить элемент в список с названием типа "Нет стандартных значений" и сделать его не выбираемым. При открытии будут сразу понимать. Идея с елементом "Нет стандартных значений" мне тоже пришла в голову, но если сделать его не выбираемым, то будет несравненно лучше.Только подскажите еще пожалуйста как ето сделать (то есть сделать item в QComboBox не выбираемым), желательно микропример. Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: radislav72 от Сентябрь 08, 2010, 19:40 Получилось сделать non-select item в комбобоксе через класс, производный от QStandardItemModel
Файл .h Код: #ifndef DISABLEITEM_MODEL_H Файл .cpp Код: #include "disableitemmodel.h" Соответственно, использование: Код: ui->comboBox->setModel(new DisableItemModel()); Может, не лучший способ... Новичок я в QT :) Если у кого есть предложения по улучшению и желание ими поделиться, буду рад услышать Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: Marat(Qt) от Сентябрь 09, 2010, 12:08 Если не ошибаюсь, вид и размер кнопки комбобокса задается через css, как насчет того чтобы занулить ее ширину?
Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: GreatSnake от Сентябрь 09, 2010, 12:39 Цитировать Если не ошибаюсь, вид и размер кнопки комбобокса задается через css, как насчет того чтобы занулить ее ширину? Имхо, не получится. Единственное, что мне удалось добиться через css - так это узкую кнопку без стрелки.Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: Marat(Qt) от Сентябрь 09, 2010, 13:00 Цитировать Если не ошибаюсь, вид и размер кнопки комбобокса задается через css, как насчет того чтобы занулить ее ширину? Имхо, не получится. Единственное, что мне удалось добиться через css - так это узкую кнопку без стрелки.Код: QComboBox { Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: radislav72 от Сентябрь 10, 2010, 07:11 Цитата: Marat(Qt) QComboBox { Очень хорошее решение, работает: из комбобокса получается настоящий лайнедит.border: 1px solid gray; .............................. Большое спасибо всем за дельные советы! Название: Re: Редактируемый QComboBox без кнопки со стрелкой Отправлено: GreatSnake от Сентябрь 10, 2010, 10:43 Цитировать Ваше имхо далеко от истины Может быть. Но проблема в том, что вы таким образом как бы "ломаете" текущий стиль для QLineEdit.Т.е. такой модифицированный combobox не выглядит так же как рядом стоящие QLineEdit. |