Russian Qt Forum
Апрель 26, 2024, 07:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: SQLite + GUI  (Прочитано 12398 раз)
sinbad7
Гость
« : Декабрь 01, 2010, 13:32 »

Может кто-нибудь кинуть в тему архивчик такого проекта
1 форма, 1 TableView на ней, одна БД SQLite с одной таблицей с одним полем, чтобы эта таблица была присоединена к TableView с помощью модели?
Заранее благодарен. Посылки в сторону гугла и книжек не принимаю.
Записан
crossly
Гость
« Ответ #1 : Декабрь 01, 2010, 13:39 »

а не надо ни в книжки ни в гугл... открой примеры Qt и посмотри...
Записан
sinbad7
Гость
« Ответ #2 : Декабрь 01, 2010, 14:26 »

если бы ты ознакомился с примерами, ты бы так не говорил
Записан
crossly
Гость
« Ответ #3 : Декабрь 01, 2010, 14:40 »

ознакамливался... лет 5 назад... и вопрос на твой вопрос я там ответ нашел....
Записан
sinbad7
Гость
« Ответ #4 : Декабрь 01, 2010, 15:21 »

Итак что мы имеем
примеры из ветки SQL
1. Cashed Table - нет формы, БД создается в памяти хоть это и не столь критично, но все-таки
2. Drill Down - нет формы, БД создается в памяти
3. Query Model - нет формы, БД создается в памяти
4. Relational Table Model - нет формы, БД создается в памяти
5. Table Model - нет формы, БД создается в памяти
6. Music Archive - нет формы, БД создается в памяти
7. SQL Widget Mapper - нет формы, БД создается в памяти
Может у меня примеры не те что 5 лет назад?
Записан
sergun1604
Гость
« Ответ #5 : Декабрь 01, 2010, 15:33 »

Человек задал конкретный вопрос, надо дать ему конкретный ответ.
Дружище я тебе архив не буду высылать скажу как я сделал.
1 Создал форму
2 Кинул табле виев
3 Создается база в каталоге с прогой

Код:
 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //подключаем драйвер базы
        db.setDatabaseName("my");                               //подключаем бызу данных "мой"
        db.setUserName("sergey");                               //имя пользователя
        db.setHostName("localhost");                            //имя хоста
        db.setPassword("password");                             //пароль
        if(!db.open())                                          //открываем базу
        {
            qDebug()<<"Невозможно открыть базу данных:"<<db.lastError();
        }

4 Таблицы я создавал с помощью sqlitebrowser

5 Запрсы к ним организовывал с помощью

QSqlQuery query;                             //запрос
QString StrName;                             //строка
query.exec("SELECT * FROM ktr;");     //извлечь увсе строки из контрагентов
   
Записан
sinbad7
Гость
« Ответ #6 : Декабрь 01, 2010, 16:06 »

Спасибо Сергей, за ответ, скажи только, вот этот код ты где набирал в каком из файлов проекта? И еще хотелось бы про модель немного...
« Последнее редактирование: Декабрь 01, 2010, 16:12 от sinbad7 » Записан
crossly
Гость
« Ответ #7 : Декабрь 01, 2010, 16:14 »

Итак что мы имеем
примеры из ветки SQL
1. Cashed Table - нет формы, БД создается в памяти хоть это и не столь критично, но все-таки
2. Drill Down - нет формы, БД создается в памяти
3. Query Model - нет формы, БД создается в памяти
4. Relational Table Model - нет формы, БД создается в памяти
5. Table Model - нет формы, БД создается в памяти
6. Music Archive - нет формы, БД создается в памяти
7. SQL Widget Mapper - нет формы, БД создается в памяти
Может у меня примеры не те что 5 лет назад?


QTableView это GUI... если это не тот вариант то возьмите к примеру QWIdget и положите view на него....
для того что бы база создавалась не в памяти нужно всего лишь заменить :memory: на имя файла в котором вы хотите хранить...
« Последнее редактирование: Декабрь 01, 2010, 16:17 от crossly » Записан
sinbad7
Гость
« Ответ #8 : Декабрь 01, 2010, 16:21 »

Цитировать
QTableView это GUI... если это не тот вариант то возьмите к примеру QWIdget и положите view на него....
для того что бы база создавалась не в памяти нужно всего лишь заменить :memory: на имя файла в котором вы хотите хранить...
под GUI я подразумеваю файл формы созданный в QT Creator, а не создаваемый динамически в коде, насчет базы я сказал что для меня это неважно. Для меня проблема в том, где что будет находиться и как оно между собой связывается.
« Последнее редактирование: Декабрь 01, 2010, 16:24 от sinbad7 » Записан
sergun1604
Гость
« Ответ #9 : Декабрь 01, 2010, 16:24 »

файл .срр не забудь подключить SQL
#include "QtSql"

Код:
QSqlQueryModel *md = new QSqlQueryModel;                       //модель
    QString strF;                                                                          //строка
    strF="SELECT id, name, amount, cen, nac, cenr, sumo, sumr FROM vrem";
    md->setQuery(strF);
    md->setHeaderData(1,Qt::Horizontal,trUtf8("Наименоваие\n товара"));        //создаем имя столбца наме
    md->setHeaderData(2,Qt::Horizontal,trUtf8("Кол-во"));        //создаем имя столбца количество
    md->setHeaderData(3,Qt::Horizontal,trUtf8("Цена"));        //создаем имя столбца цена
    md->setHeaderData(4,Qt::Horizontal,trUtf8("Нац-ка"));        //создаем имя столбца наценка
    md->setHeaderData(5,Qt::Horizontal,trUtf8("Цена\n продажи"));        //создаем имя столбца
    md->setHeaderData(6,Qt::Horizontal,trUtf8("Сумма\n опт-ая"));        //создаем имя столбца
    md->setHeaderData(7,Qt::Horizontal,trUtf8("Сумма\n реал-ии"));        //создаем имя столбца


    ui->tableView->setModel(md);                                                 //привязыва*/ем набор данных к таблице
    ui->tableView->resizeColumnsToContents();                               //по ширене текста колонка
    ui->tableView->setColumnHidden(0,true);             //скрыть 1 столбец
                         
Записан
crossly
Гость
« Ответ #10 : Декабрь 01, 2010, 16:34 »

данный код даст утечку.... если не удалить модель в деструкторе ...
Записан
sinbad7
Гость
« Ответ #11 : Декабрь 01, 2010, 16:42 »

Программа компилится, но не запускается, вылетает с ошибкой что не так?
Записан
crossly
Гость
« Ответ #12 : Декабрь 01, 2010, 16:47 »

ui->setupUi(this) должен быть в начале конструктора
Записан
sergun1604
Гость
« Ответ #13 : Декабрь 01, 2010, 16:55 »

что за ошибка?
(кстати crossly  а как удалить модель в деструктере, меня волнует эта тема)
Записан
crossly
Гость
« Ответ #14 : Декабрь 01, 2010, 17:07 »

Код:
delete md;
для того что бы не думать об этом... назначайте объектам родителя.... new QSqlQueryModel(this);
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.