crossplatform.ru

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


  Ответ в Отображение данных в tableView из БД.
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 30.7.2010, 19:28
 
Цитата(potkin @ 30.7.2010, 22:02) *
Вот чем мне нраивлся .NET

Странно, а мне этот момент как раз резко противен :)
potkin Дата 30.7.2010, 19:02
 
Цитата
... то в шарпе утечка памяти произойдёт тоже, но "ненадолго" - сборщик рано или поздно подчистит.

Вот чем мне нраивлся .NET :)
Хорошо всё продумали Мелкосовцы.
Жаль, что под Линуксом (МОНО) крупный проект хрен нормально будет работать :( . Почему и на Qt заставили съехать.
Алексей1153 Дата 30.7.2010, 18:41
  potkin, неважен путь (а в Дельфи чай тоже указатели используются) , это же основы. Ну так то да, шарп у тебя был лишний - он расхолаживает, ну а C++ сам по себе с Qt не связан, это самостоятельный язык.

В шарпе имеется различие на структурные типы и ссылочные. Первые можно создавать на стеке, вторые - только в куче, а запись вида
A a= new A(...);


объявлет ссылку "a" типа "A" (а ссылка - это абсолютно полный аналог указателя, что бы там не пищал компилятор :D ) и ей присваивается адрес созданногов куче объекта типа A. Если про ссылку (читай - указатель) "забыть", то в шарпе утечка памяти произойдёт тоже, но "ненадолго" - сборщик рано или поздно подчистит.

А в C++ всё проще - надо чётко говорить, где должна создаться переменная - на стеке или в куче. Оператор new всегда создаёт в куче и возвращает указатель. А выражение в некой функции:

A a(...);


- создаёт переменную на стеке (так же и параметры функций тоже в стеке сидят).

Если размер тела объекта оказется больше стека, объект при создани на стеке заставит программу экстренно завершиться - из-за переполнения стека.

Например
BYTE Array1[0xffffff];// - нельзя так создавать на стеке
BYTE* Array2=new BYTE[0xffffff];// зато в куче можно


вот как-то так :)
potkin Дата 30.7.2010, 15:19
  Алексей1153,
Мой путь:
Delphi 1-2005 + Builder -> MVS 2005-2008 (.NET 2.0-3.5, C#) -> C++ (Qt)
C++ не знаю, только счас изучаю.
Алексей1153 Дата 30.7.2010, 12:39
  potkin, если это не просто опечатка была, то срочно открывай книжку по C++ - читай про указатели :)
potkin Дата 30.7.2010, 11:59
  Спасибо !!!
+ надо было так:
QSqlTableModel *model;
        model = new QSqlTableModel(this, db);

а не так:
QSqlTableModel model = new QSqlTableModel(this, db);

как в примерах :blink:
BRE Дата 30.7.2010, 11:55
  model->

вместо

model.
potkin Дата 30.7.2010, 11:47
  Есть код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName(ui->lEHostName->text());
    db.setDatabaseName(ui->lEDatabaseName->text());
    db.setUserName(ui->lEUserName->text());
    db.setPassword(ui->lEPasswor->text());

    if(db.open())
    {
        QSqlTableModel model = new QSqlTableModel(this, db);
        model.setTable("table1");
        model.setHeaderData(0, Qt::Horizontal, "id"); // .setHeaderData(0, Qt::Horizontal, “id”);
        model.setHeaderData(1, Qt::Horizontal, "firstname");
        model.setHeaderData(1, Qt::Horizontal, "lastname");
        model.select();
        ui->tableView->setModel(&model);
        ui->tableView->resizeColumnsToContents();

        db.close();
    }
    else
    {
         QMessageBox::warning(0 , "Error !", db.lastError().databaseText());
    }


на строке "QSqlTableModel model = new QSqlTableModel(this, db);" выдаёт ошибку:
C:/Qt/2010.02.1/qt/FireBird_1/mainwindow.cpp:49: error: conversion from 'QSqlTableModel*' to non-scalar type 'QSqlTableModel' requested


В нете примеры есть, но они также не работают, например один из них
...
QSqlTableModel model = new QSqlTableModel(this); // Тут к БД model не привязана ни как, да и не работает код всё равно :(
...


Подскажите что не так ?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 18:24