crossplatform.ru

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

> Каким образом QTableView меняет QSqlQuery?, Ткните плс носом туда, где об этом подробно написанно.
Stanislaus
  опции профиля:
сообщение 23.4.2008, 16:09
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 23.4.2008
Пользователь №: 156

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




Репутация:   0  


Столкнулся тут с неким багом(?). Сделал обработчик сигнала doublrClicked для QTableView:
connect(ui.scripts, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(updateScript(QModelIndex)));


Сам слот:
void ScriptEditor::updateScript(const QModelIndex &index)
{

    QSqlDatabase db = QSqlDatabase::database("mc");
    QSqlQuery scripts_query = dynamic_cast<QSqlQueryModel *>(ui.scripts->model())->query();

    QSqlQuery q(db);
    if (!q.prepare("select gui.fetch_script(?)"))
        qDebug() << "F*ck!";
    q.bindValue(0,scripts_query.record().value("id").toInt());
    
    if (!q.exec())
        qDebug() << "F*ck!";
    q.next();
    QTextDocument *doc = new QTextDocument;
    doc->setPlainText(q.value(0).toString());
    if (scripts_query.value(4).toInt()==PERL) phl.setDocument(doc);
    ui.scriptEdit->setDocument(doc);
    currentScriptID = scripts_query.value(0).toInt();
    ui.scriptCaption->setText(scripts_query.value(1).toString());
}


Коннекшн:

void MainWin::initConnections ()
{
    QSqlDatabase db;
    if (QSqlDatabase::isDriverAvailable("QPSQL"))

        db = QSqlDatabase::addDatabase("QPSQL", "mc");
    else {
        qDebug() << trUtf8("Нету драйвера для postgreSQL..."));
        return;
    }
    db.setHostName("10.10.1.123");
    db.setPort(5433);
    db.setDatabaseName("DBNAME");
    db.setUserName("user");
    db.setPassword("password");
    if (!db.open()){
        QMessageBox::critical(this, trUtf8("Мдя..."), db.lastError().text());
        return;
    }
}


Когда я открываю даблкликом документы перемещаясь по строкам вниз QTableView, все нормально, но, как только я начинаю перемещаться с нижних строк на верхние, он открывает предыдущий нижний документ (последний scripts_query.value(1) == предыдущему scripts_query.value(1)), хотя вью и модель изменились.

У меня Qt GPL 4.3.4, скомпилированная Visual C++ 2008 Express Edition, h-ки и библиотеки для PSQL от PostgreSQL 8.3.1.

Хочу добавить, что под X11 все пашет идеально.

Короче застрял, если нужны какие-нибудь дополнительные данные, сообщите.

Сообщение отредактировал Stanislaus - 23.4.2008, 16:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.6.2025, 10:55