crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QComboBox & model/view
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 17.5.2009, 23:44
 
Цитата(hoRUS @ 18.5.2009, 0:41) *
Но почему тогда не получается скрыть строки таки образом:

qobject_cast<QListView*>(myComboBox -> view()) -> setRowHidden(i, true);
надо смотреть исходник QComboBox'а
hoRUS Дата 17.5.2009, 20:41
  Но почему тогда не получается скрыть строки таки образом:

qobject_cast<QListView*>(myComboBox -> view()) -> setRowHidden(i, true);

?
Litkevich Yuriy Дата 17.5.2009, 18:30
 
Цитата(hoRUS @ 17.5.2009, 22:19) *
И все-таки, можно скрыть строчку, не используя промежуточные модели?
дак, вот эти самые модели для этого и предназначены. Какой смысл изобретать свой метод, когда уже есть готовый.

Цитата(hoRUS @ 17.5.2009, 22:19) *
зачем в комбобоксе есть и setModel(), и setView()? Нет ли тут избыточности?
Зачем установка модели, наверное понятно. Тогда остаётся вопрос зачем установка представления, ответ - представление может быть не списковым. Собственные представления могут применятся, например, при выборе цвета (что-то подобное таблицы с цветными квадратиками).

Цитата(hoRUS @ 17.5.2009, 22:19) *
Почему нельзя установить модель на новый создаваемый вид, а этот новый вид в свою очередь установить в комбобоксе?
ну, например, потому что можно установить модель непосредственно в QComboBox'е
hoRUS Дата 17.5.2009, 18:19
  Приветствую!
Как в QComboBox скрыть некоторые строки, если он настроен отображать содержимое некоторой модели с помощью QComboBox::setModel(), не прибегая к прокси-моделям ?

Я пытался сделать примерно так:

myComboBox = new QComboBox(this);
myComboBox  -> setModel(myModel);

QListView* myComboBoxListView = new QListView(this);
myComboBoxListView -> setModel(myModel);
myComboBox  -> setView(myComboBoxListView);
...
for(int i = 0; i < myComboBox -> count(); i++)
{
     if(<некое условие>)
     {
            qobject_cast<QListView*>(myComboBox -> view()) -> setRowHidden(i, true);
     }
}


Но не получил никакого эффекта. Если я исключаю строчку
myComboBox  -> setModel(myModel);

(надеясь, что модель установится вместе с видом myComboBoxListView, у которого уже установлена модель в строчке
myComboBoxListView -> setModel(myModel);

), то вообще ничего не работает. Отсюда еще один вопрос: зачем в комбобоксе есть и setModel(), и setView()? Нет ли тут избыточности? Почему нельзя установить модель на новый создаваемый вид, а этот новый вид в свою очередь установить в комбобоксе? Все как-то запутанно с комбобоксом :wacko: .

И все-таки, можно скрыть строчку, не используя промежуточные модели?
Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 22:40