crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> модель и qcombobox
abc
  опции профиля:
сообщение 16.12.2010, 14:00
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


Беру из БД часть значений, пихаю их в comboBox, хочу одну строку в боксе пустую, чтобы она была одним из вариантов, как её добавить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 16.12.2010, 14:04
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(abc @ 16.12.2010, 14:00) *
Беру из БД часть значений, пихаю их в comboBox, хочу одну строку в боксе пустую, чтобы она была одним из вариантов, как её добавить?

тогда добавь пустую строку QString(tr("")) на нужную позицию в босксе и все:) void QComboBox::insertItem ( int index, const QString & text, const QVariant & userData = QVariant() )

Сообщение отредактировал wiz29 - 16.12.2010, 14:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 16.12.2010, 14:04
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


поправка: из бд в модель, модель в бокс
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 16.12.2010, 14:16
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(abc @ 16.12.2010, 14:04) *
поправка: из бд в модель, модель в бокс

ну тогда в модели данных создавай пустое поле...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vankleef
  опции профиля:
сообщение 16.12.2010, 14:16
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


только добавляй свою строку после того как модель туда запихнул
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 16.12.2010, 14:27
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


QSqlQueryModel * query=new QSqlQueryModel;
query->setQuery(str,db);
comboBox->setModel(query);
qDebug()<<query->insertRow(0); //false
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vankleef
  опции профиля:
сообщение 16.12.2010, 22:36
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


QSqlQueryModel * query=new QSqlQueryModel;
query->setQuery(str,db);
comboBox->setModel(query);
comboBox->insertItem(0,"Еще один элемент в комбобоксе");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 17.12.2010, 12:40
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


ничего не даёт, так понимаю, что боксу назначена модель, и он не станет отображать прям в него засунутые ячейки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
arial
  опции профиля:
сообщение 17.12.2010, 14:17
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 39
Регистрация: 27.9.2009
Пользователь №: 1121

Спасибо сказали: 9 раз(а)




Репутация:   0  


Создай свою модель и делай там что хочешь.
Примерно так это будет выглядеть:
class MyModel : public QAbstractItemModel
{
    Q_OBJECT
    
public:
    explicit MyModel(QObject *parent = 0);
    ~MyModel();
    
    QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
    QModelIndex parent(const QModelIndex &child) const;

    int rowCount(const QModelIndex &parent = QModelIndex()) const;
    int columnCount(const QModelIndex &parent = QModelIndex()) const;

    inline QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const
    {
        // Если запрашивают строку с индексом ноль,
        // возвращаем пустое значение
        if (index.row() == 0) {
            return QVariant();
        }

        // Во всех других случаях возвращаем данные
        // из QSqlQueryModel
        return m_model->data(index.sibling(index.row() - 1, index.column()), role);
    }
    
private:
    QSqlQueryModel *const m_model;
};

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 19.12.2010, 16:46
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


данные из m_model в бокс не попадают
если я правильно понял смысл: в m_model помещаю мой запрос, боксу присваиваю экземпляр MyModel
наследовался от QSqlQueryModel, потому что компилятор, при наследовании от QAbstractItemModel, ругается на все функции, что они абстрактные - что это значит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:04