подскажите как поправить, или что тут может быть не так, к примеру простая форма с несколькими кнопками и вьюхой:
#ifndef form_query_H
#define form_query_H
#include "..."
namespace Ui { class form_query; }
class form_query :
public QWidget
{
Q_OBJECT
public:
form_query(QWidget *parent = 0);
~form_query();
private:
Ui::form_query *ui;
QSqlDatabase db;
QSqlQueryModel m_model;
public slots:
void _on__connect_refresh();
void _on__connect();
void _on__disconnect();
void _on__remove_connect();
void _on__connect_select();
};
#endif // form_query_H
#include "form_query.h"
#include "..."
//-------------------------------------------------------------------------------------------------
form_query::form_query(QWidget *parent) :
QWidget(parent),
ui(new Ui::form_query)
{
ui->setupUi(this);
}
//-------------------------------------------------------------------------------------------------
form_query::~form_query()
{
delete ui;
}
//-------------------------------------------------------------------------------------------------
void form_query::_on__connect_refresh()
{
if(db.isValid())
ui->label_test2->setText( ui->label_test2->text() + " db_is_valid");
if(db.isOpen())
ui->label_test2->setText( ui->label_test2->text() + " db_is_open");
if( m_model.query().isActive())
ui->label_test2->setText( ui->label_test2->text() + " query_is_active");
}
//-------------------------------------------------------------------------------------------------
void form_query::_on__connect()
{
ui->label_test2->setText("_on__connect");
QSqlDatabase::removeDatabase( "test" );
db = QSqlDatabase::addDatabase( "QIBASE" , "test" );
db.setHostName( "127.0.0.1" );
db.setPort( 3050 );
db.setDatabaseName( "D:\\test.FDB" );
db.setConnectOptions( "" );
db.setUserName( "SYSDBA" );
db.setPassword( "masterkey" );
db.open();
_on__connect_refresh();
}
//-------------------------------------------------------------------------------------------------
void form_query::_on__disconnect()
{
ui->label_test2->setText("_on__disconnect");
db.close();
_on__connect_refresh();
}
//-------------------------------------------------------------------------------------------------
void form_query::_on__remove_connect()
{
ui->label_test2->setText("_on__remove_connect");
db.removeDatabase("test");
_on__connect_refresh();
}
//-------------------------------------------------------------------------------------------------
void form_query::_on__connect_select()
{
ui->label_test2->setText("_on__connect_select");
QSqlQuery q("SELECT * FROM ui_table",db);
m_model.setQuery(q);
ui->view->setModel(&m_model);
_on__connect_refresh();
}
вообщем при нажатии на _on__connect_refresh(); - срабатывает в любом случае и выдает кое какие данные,
и если подключиться к бд (_on__connect() ) а потом вызвать _on__disconnect() то все ок,: FB вначале выдает что было 1 соединение а потом 0,
но если после _on__connect() вызвать _on__connect_select() и _on__disconnect() то соединение остается!
что может мешать разорвать соединение?