Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

QMessageBox то работает, то нет

25K
09 июля 2007 года
Andreu_Re
16 / / 11.06.2007
Столкнулся ещё с необъяснимым пока явлением.
В одних местах QMessageBox работает как ему и полагается по справочнику, а в других абсолютно так-же прописанный вызывает падение программы. Каких только не перепробовал вариантов, в том числе пытался подогнать все условия функции где падает под ту функцию где работает.
Смотрели код ещё 2 программиста, не помогли.

Вот код с комментариями работы QMessageBox-а написанных в "блокноте".

Qt 3.3.3
IDE - KDevelop

Код:
----------------------------Хидер---------------------------------
#ifndef LISTCIRK_RASS_H
#define LISTCIRK_RASS_H

#include <qlistview.h>
#include <qpushbutton.h>
#include <qmainwindow.h>
#include <qapplication.h>
#include "pibd.h"
#include "pgaddrbook.h"
#include "n_webbr.h"
#include "ListView.h"
#include <qaction.h>
#include <qpopupmenu.h>
#include <qdialog.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qmessagebox.h>
#include <qheader.h>


class ListCirkRass : public QMainWindow
{
Q_OBJECT
  public:

  ListCirkRass (DBHANDLE, int, QString*, N_WebBr*);
  ~ListCirkRass ();

  public slots:

  void slot_accept();
  void slot_cancel();
  void slotPopupMenu (QListViewItem*, const QPoint&, int);
  void slotAddNewList ();
  void slotAddNewDolj ();
  void slotADDNewDolj_continue ();
  void slotDelDolj ();
  void slotDelList ();
  void slotDelAll();

  private:

  void buildTree ();
  void buildTree_2level (QListViewItem*);  
  QListView* lv;
  QListViewItem* myQlvi;
  QPushButton* accept;
  QPushButton* cancel;
  int (*Init_AddrBook)(DBHANDLE);
  int (*BuildTree)(QListView, int);
  void resizeEvent (QResizeEvent *);
  ADDRLIST AddrList;
  QString* This_textBr;
  N_WebBr* hereWebBr;
  DBHANDLE dbh1;     //Дескриптор БД
  int dolj_num; //Должность ДЛ на АРМ
  int num_dolj; //Должность для добавления адресата в список рассылки
  myListView* Addr_View;

};

class addList_rass : public QDialog
{
Q_OBJECT
public:
    addList_rass (QWidget *parent, char **_Group, int *_Answer);
    ~addList_rass();
public slots:
    void slotOkClicked();
    void slotCancelClicked();
private:
    QLineEdit *le;
    QPushButton *OkBtn, *CancelBtn;
    char **Group;
        int *Answer;
};

//Потом стал классом исключения не только для SQL (определяется флагом)
class SQL_Exseption
{
  public:
    SQL_Exseption(char*, int, QString, int);
    ~SQL_Exseption();
    QString myMessage;
    int myFlag;

};

int SetParam_intoDoc (QString* const, const QString, const QString, const QString, const bool);

QString Get_full_name_dolj (const int num, const int flag_skl);

#endif
25K
09 июля 2007 года
Andreu_Re
16 / / 11.06.2007
Код:
------------------------------------ЦПП-шник-----------------------

#define test

#include "ListCirk_rass.h"


ListCirkRass::ListCirkRass (DBHANDLE dbh, int dolj, QString* text_Br, N_WebBr* WebBr) : QMainWindow(0, 0, Qt::WShowModal)
{
  #ifdef test
  printf("Внутри конструктора myListCirkRass(), dbh= %d, dolj= %d\n", dbh, dolj);
  #endif
  This_textBr = text_Br;
  hereWebBr = WebBr;
  dbh1 = dbh;
  dolj_num = dolj;
  setCaption(tr("Списки рассылки"));
  int x = QApplication::desktop()->width();
  int y = QApplication::desktop()->height();
  setGeometry(x/2-x/3, y/2-y/3, x/4*2, y/4*2);
  setMinimumWidth (500);
  QFont font("helvetica_mcbc", 12);
  font.setBold(true);
  setFont(font);

  lv = new QListView (this);
  lv->clear();
  lv->setGeometry(10, 30, width()-20, height() - 70);
  lv->addColumn(tr("name"), -1);
  lv->addColumn(tr("num"), -1);
  lv->addColumn("dolj_id", -1);
  lv->header()->setClickEnabled(false);
  lv->header()->hide();
  lv->setRootIsDecorated (true);
  lv->setSorting(-1);

  buildTree ();

  accept = new QPushButton(tr("Принять"),this);    
  accept->setGeometry(width()/2 - 195, height() - 30, 90, 25);
  accept->setFont(font);
  connect(accept, SIGNAL(clicked()), this, SLOT(slot_accept()));

  cancel = new QPushButton(tr("Отмена"),this);  
  cancel->setGeometry(width()/2 + 105, height() - 30, 90, 25);
  cancel->setFont(font);
  connect(cancel, SIGNAL(clicked()), this, SLOT(slot_cancel()));
 
  connect(lv, SIGNAL (rightButtonClicked (QListViewItem*, const QPoint&, int)), this, SLOT (slotPopupMenu (QListViewItem*, const QPoint&, int)));
}

ListCirkRass::~ListCirkRass ()
{
}

void ListCirkRass::slot_accept()
{
  #ifdef test
  printf("Внутри ListCirkRass::slot_accept()\n");
  #endif
  //Здесь не смотрите, еще этот слот не реализовал

  close();
}

void ListCirkRass::slot_cancel()
{
  close();
}

void ListCirkRass::slotPopupMenu (QListViewItem* qlvi, const QPoint& p, int col)
{
#ifdef test
printf ("Внутри slotPopupMenu ()\n");
printf ("qlvi= %d, col= %d\n", qlvi, col);
#endif
  myQlvi = qlvi;
  QPopupMenu *pm;
  pm = new QPopupMenu(lv);
  pm->setFont(QFont("helvetiva",10));
  QAction *AddNew, *AddDolj, *DelDolj, *DelList, *DelAll;
  if( col == -1 || (col == 0 && qlvi->parent() == 0) )
    {
    AddNew = new QAction (tr("Добавить"), tr("Добавить список"), 0, this);
    connect(AddNew, SIGNAL(activated()), this, SLOT(slotAddNewList()));
    AddNew->addTo(pm);
    }

  if( col == 0 /*&& qlvi->parent() == 0*/)
    {
    AddDolj = new QAction (tr("Добавить"), tr("Добавить адресата"), 0, this);
    connect(AddDolj, SIGNAL(activated()), this, SLOT(slotAddNewDolj ()));
    AddDolj->addTo(pm);
    }

  if( col == 0 && qlvi->parent() != 0)
    {
    DelDolj = new QAction (tr("Удалить"), tr("Удалить адресата"), 0, this);
    connect(DelDolj, SIGNAL(activated()), this, SLOT(slotDelDolj ()));
    DelDolj->addTo(pm);
    }

  if( col == 0 && qlvi->parent() == 0 )
    {
    DelList = new QAction (tr("Удалить"), tr("Удалить список"), 0, this);
    connect(DelList, SIGNAL(activated()), this, SLOT(slotDelList ()));
    DelList->addTo(pm);
    }

  if( col == -1 && !(col == 0 && qlvi->parent() == 0) )
    {
    DelAll = new QAction (tr("Удалить"), tr("Удалить всё"), 0, this);
    connect(DelAll, SIGNAL(activated()), this, SLOT(slotDelAll()));
    DelAll->addTo(pm);
    }
    pm->popup(p);
}

void ListCirkRass::slotAddNewList ()
{
#ifdef test
printf ("Внутри slotAddNewList ()\n");
#endif

try
{
  char *buf = NULL;
  int *Answer;
  addList_rass *adlr = new addList_rass (this, &buf, Answer);
  adlr->exec();
//*Answer == 1 - нажата кнопка "Отмена" ввода названия списка рассылки
  if (*Answer == 1)
    return;
  if ( buf == NULL || strlen(buf) <= 1)
    throw (SQL_Exseption ("Вы не набрали название списка рассылки", 0, tr("Ошибка ввода названия"), 1 ));

  char StrSQL[1000];
  int res;
  tagMETAOBJECT * pmobj=new tagMETAOBJECT;
  tagOBJECTLIST * pobjlist=new tagOBJECTLIST;
  LPOBJECT pobj;
  VTRESULT pVariant;
//Узнаем максимальный num из tdc_cirk_rass для ДЛ на АРМ
  sprintf(StrSQL, "select max(num) from tdc_cirk_rass where sndr=%d", dolj_num);
  res = OpenSQLObjectList(dbh1, (LPCSTR)StrSQL, pmobj , pobjlist);
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка добавления списка рассылки"), 0 ));
   
    pobj=pobjlist->lpObjHead;
    int numIntoTable = 0;
    while (pobj!=NULL)
      {
      GetObjectParamByIndex(*pmobj,*pobj, 0,&pVariant);
      VtToInt(pVariant, &numIntoTable);
      ReleaseVariant(pVariant);
      pobj = pobj->lpNext;
      }

  sprintf(StrSQL, "insert into tdc_cirk_rass (num, name, dolj_id, sndr) values (%d, \'%s\', -1, %d)", numIntoTable + 1, buf, dolj_num);

  res = ExecuteSQLQuery (dbh1, StrSQL);
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка добавления списка рассылки"), 0 ));
 
  lv->clear();
  buildTree ();
  CloseObjectList(pobjlist);
  delete pmobj;
  delete pobjlist;
  printf ("Место667\n");
}
catch (SQL_Exseption e)
{

---------------ВОТ ЗДЕСЬ РАБОТАЕТ БЕЗ ПРОБЛЕМ------------------

  if (e.myFlag == 0)
    QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
  else
    QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка ввода"), e.myMessage);
    return;
}
}

void ListCirkRass::slotAddNewDolj ()
{
#ifdef test
printf ("Внутри slotAddNewDolj ()\n");
#endif

  num_dolj = 0; //Сюда поместить выбранного адресата
  Addr_View = new myListView (dbh1, dolj_num, 1, NULL, 0, NULL, &num_dolj);
  Addr_View->show ();
  connect (Addr_View, SIGNAL (destroyed ()), this, SLOT (slotADDNewDolj_continue ()) );
}

void ListCirkRass::slotADDNewDolj_continue ()
{
  if ( num_dolj == -1)
    return;
  printf ("ListCirkRass::slotADDNewDolj_continue (): num_dolj= %d\n", num_dolj);
//Сейчас есть QListViewItem* myQlvi, dolj_num
try
{
  char StrSQL[1000];
  int res;
//Помещаем запись нового адресата для выбранного списка рассылки в БД
  int num;
  num = myQlvi->text(1).toInt();
  if ( num == -2)
    {
    num = myQlvi->parent()->text(1).toInt();
    myQlvi = myQlvi->parent();
    }
//Проверяем наличие такого адресата в списке, здесь myQlvi - указатель на список
  QListViewItem * tmpItem = myQlvi->firstChild();
  while (tmpItem)
    {
    if( tmpItem->text(2) == tr("").number(num_dolj) )
      {

------------------------------ЗДЕСЬ ТОЖЕ РАБОТАЕТ-------------

      QMessageBox::warning (0, QString::fromLocal8Bit("Внимание"), QString::fromLocal8Bit("Такой адресат в данном списке уже есть"));
      return;
      }
    tmpItem = tmpItem->nextSibling();
    }

  sprintf(StrSQL, "insert into tdc_cirk_rass (num, parent, dolj_id, sndr) VALUES (-1, %d, %d, %d)", num, num_dolj, dolj_num);
  res = ExecuteSQLQuery (dbh1, StrSQL);
 
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка добавления нового адресата в список"), 0 ));

  lv->clear();
  buildTree ();
  printf ("Место 1098\n");
}
catch (SQL_Exseption e)
{

-------------ЗДЕСЬ НЕ ПОМНЮ, КАЖЕТСЯ ТОЖЕ РАБОТАЕТ--------------

  QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
 
    return;
}
}

void ListCirkRass::resizeEvent ( QResizeEvent * )
{
  lv->setGeometry(10, 30, width()-20, height()-70);
  accept->setGeometry(width()/2 - 195, height() - 30, 90, 25);
  cancel->setGeometry((int)width()/2 + 105, height() - 30, 90, 25);
}

void ListCirkRass::buildTree ()
{
  #ifdef test
  printf("Внутри ListCirkRass::buildTree ()\n");
  #endif
//Есть: dolj_num - ДЛ на АРМ, QListView* lv
try
{
  char StrSQL[1000];
  char str[256];
  int res;
  char num[50];
  char dolj1[50];
  tagMETAOBJECT * pmobj = new tagMETAOBJECT;
  tagOBJECTLIST * pobjlist = new tagOBJECTLIST;
  LPOBJECT pobj;
  VTRESULT pVariant;
  QListViewItem *qlvi = NULL;
  //Узнаем максимальный num из tdc_cirk_rass для ДЛ на АРМ
  sprintf(StrSQL, "select num, name, dolj_id from tdc_cirk_rass where dolj_id=-1 and sndr=%d order by num", dolj_num);
  res = OpenSQLObjectList(dbh1, (LPCSTR)StrSQL, pmobj , pobjlist);
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка построения дерева списков рассылки"), 0 ));
   
    pobj=pobjlist->lpObjHead;
    while (pobj!=NULL)
      {
      GetObjectParamByIndex(*pmobj, *pobj, 1,&pVariant);
      VtToString(pVariant, str);
      ReleaseVariant(pVariant);
      GetObjectParamByIndex(*pmobj, *pobj, 0,&pVariant);
      VtToString(pVariant, num);
      ReleaseVariant(pVariant);
      /*GetObjectParamByIndex(*pmobj, *pobj, 2,&pVariant);
      VtToString(pVariant, dolj1);
      ReleaseVariant(pVariant);*/
      if( qlvi == NULL )
    {
    qlvi = new QListViewItem(lv, tr(str), tr(num)/*, tr(dolj1)*/);
        buildTree_2level (qlvi);
    }
    else
    {
    qlvi = new QListViewItem(lv, qlvi, tr(str), tr(num)/*, tr(dolj1)*/);
        buildTree_2level (qlvi);
        }

      pobj = pobj->lpNext;
      }
CloseObjectList(pobjlist);
delete pmobj;
delete pobjlist;
}
catch (SQL_Exseption e)
{
 
  QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
    return;
}

}
25K
09 июля 2007 года
Andreu_Re
16 / / 11.06.2007
Код:
void ListCirkRass::buildTree_2level (QListViewItem* ptrQlvi)
{
  #ifdef test
  printf("Внутри ListCirkRass::buildTree_2level ()\n");
  #endif
  QListViewItem *qlvi = NULL;
//Запрос на детей от столбца 1 ptrQlvi

-----ЭТОТ QMessageBox (ВСТАВЛЕН ДЛЯ ЭКСПЕРИМЕНТА) НЕ РАБОТАЕТ И ПРОГРАММА ПАДАЕТ----------

QMessageBox::warning (0, QString::fromLocal8Bit("Ошибка базы данных"), QString(""));

try
{
  char StrSQL[1000];
  int answ;
  int res;
  char num[50];
  tagMETAOBJECT * pmobj = new tagMETAOBJECT;
  tagOBJECTLIST * pobjlist = new tagOBJECTLIST;
  LPOBJECT pobj;
  VTRESULT pVariant;
  printf ("buildTree_2level Место 001\n");
 
  sprintf(StrSQL, "select dolj_id from tdc_cirk_rass where sndr=%d and parent=%d order by id", dolj_num, ptrQlvi->text(1).toInt());
  printf ("StrSQL: %s\n", StrSQL);
  res = OpenSQLObjectList(dbh1, (LPCSTR)StrSQL, pmobj , pobjlist);
  printf ("buildTree_2level Место 002\n");
  printf ("res= %d\n", res);

  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка построения дерева списков рассылки"), 0 ));

   
    pobj = pobjlist->lpObjHead;
    printf ("pobj= %d\n", pobj);
    while ( pobj != NULL )
      {
      printf ("buildTree_2level Место 003\n");
      GetObjectParamByIndex(*pmobj, *pobj, 0, &pVariant);
      VtToInt(pVariant, &answ);
      ReleaseVariant(pVariant);
      if ( qlvi == NULL )
        {
    qlvi = new QListViewItem(ptrQlvi, tr(Get_full_name_dolj (answ, 0)), tr ("-2"), tr("").number(answ));
        }
      else
    {
        qlvi = new QListViewItem(ptrQlvi, qlvi, tr(Get_full_name_dolj (answ, 0)), tr ("-2"), tr("").number(answ));
    }
      pobj = pobj->lpNext;
      }
CloseObjectList(pobjlist);
delete pmobj;
delete pobjlist;
}
catch (SQL_Exseption e)
{

--------------QMessageBox НЕ РАБОТАЕТ НИ В КАКУЮ (И ПРОГРАММА ПАДАЕТ)-------------------------------------

  //if (e.myFlag == 0)
  printf ("catch (SQL_Exseption e) Место 008\n");
  printf ("e.myMessage= %s\n", (const char*)e.myMessage.local8Bit());
  QMessageBox::critical (this, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
  //QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), QString("kjgjklgl"));
  printf ("catch (SQL_Exseption e) Место 009\n");
  //else
  //QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка ввода"), e.myMessage);
    return;
}
}

void ListCirkRass::slotDelDolj ()
{
  #ifdef test
  printf("Внутри ListCirkRass::slotDelDolj ()\n");
  #endif
  int dolj_rcvr, parent;
  dolj_rcvr = myQlvi->text(2).toInt();
  parent = myQlvi->parent()->text(1).toInt();
  printf ("dolj_rcvr= %d, parent= %d\n", dolj_rcvr, parent);
try
{
  char StrSQL[1000];
  int res;
//Удаляем адресата
  sprintf(StrSQL, "delete from tdc_cirk_rass where sndr=%d and parent=%d and dolj_id=%d", dolj_num, parent, dolj_rcvr);
  res = ExecuteSQLQuery (dbh1, StrSQL);
 
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка удаления адресата из списка"), 0 ));

  lv->clear();
  buildTree ();
  printf ("Место 1100\n");
}
catch (SQL_Exseption e)
{
  QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
    return;
}
}

void ListCirkRass::slotDelList ()
{
  #ifdef test
  printf("Внутри ListCirkRass::slotDelList ()\n");
  #endif
  int num;
  num = myQlvi->text(1).toInt();
  printf ("num= %d\n", num);

try
{
  char StrSQL[1000];
  int res;
//Удаляем список и детей списка
  sprintf(StrSQL, "delete from tdc_cirk_rass where (sndr=%d and num=%d and dolj_id=-1) OR (sndr=%d and parent=%d and num=-1)", dolj_num, num, dolj_num, num);
  res = ExecuteSQLQuery (dbh1, StrSQL);
 
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка удаления списка"), 0 ));

  lv->clear();
  buildTree ();
  printf ("Место 1100\n");
}
catch (SQL_Exseption e)
{

-------НЕ ПОМНЮ, КАЖЕТСЯ ТОЖЕ НЕ РАБОТАЕТ ИЛИ НЕ ПРОВЕРЯЛ------

  QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
    return;
}
}

void ListCirkRass::slotDelAll()
{
  #ifdef test
  printf("Внутри ListCirkRass::slotDelAll ()\n");
  #endif

---------------QMessageBox РАБОТАЕТ---------------------------------

  int resQuestion = QMessageBox::question(this,tr("Подтверждение"), tr("Вы действительно желаете удалить все списки рассылки?"), tr("Да"), tr("Нет"));
  #ifdef test
  fprintf(stderr, "resQuestion вопроса = %d\n", resQuestion);
  #endif
  if (resQuestion!=0)
    return;

try
{
  char StrSQL[1000];
  int res;
//Ну если так хочется, то удаляем всё нафиг

  sprintf(StrSQL, "delete from tdc_cirk_rass where sndr=%d", dolj_num);
  res = ExecuteSQLQuery (dbh1, StrSQL);
 
  if ( res != 0 )
    throw (SQL_Exseption (StrSQL, res, tr("Ошибка добавления нового адресата в список"), 0 ));

  printf ("Место 0112\n");
  lv->clear();
  buildTree ();
  printf ("Место 1112\n");
}
catch (SQL_Exseption e)
{
 
----------НЕ ПОМНЮ, НАДОЕЛО ПЯЛИТЬСЯ В ЭКРАН, КАЖЕТСЯ ЗДЕСЬ НЕ ПРОВЕРЯЛ РАБОТУ QMessageBox---------------

  QMessageBox::critical (0, QString::fromLocal8Bit("Ошибка базы данных"), e.myMessage);
 
    return;
}
}


//Класс добавления группы (окно ввода названия списка рассылки)
addList_rass::addList_rass(QWidget *parent, char **_Group, int *_Answer):QDialog(parent, "", true, WDestructiveClose)
{  
        Answer = _Answer;
    Group = _Group;
    setCaption(tr("Добавление списка рассылки"));
    resize(300,100);
    setFixedSize(300,100);
    le = new QLineEdit(this);
    if(_Group!=NULL)
      le->setText(tr(*_Group));

    le->setGeometry(0,5,width(),22);
    OkBtn = new QPushButton("OK",this);
    CancelBtn = new QPushButton(tr("Отмена"),this);
    OkBtn->setGeometry(10,35,60,25);
    CancelBtn->setGeometry(80,35,60,25);
    connect(OkBtn,SIGNAL(clicked()),this,SLOT(slotOkClicked()));
    connect(CancelBtn,SIGNAL(clicked()),this,SLOT(slotCancelClicked()));
}

addList_rass::~addList_rass()
{
}

void addList_rass::slotOkClicked()
{
    *Group = (char*)realloc((char*)*Group, strlen(le->text())+1);
    strcpy(*Group, (const char*)le->text().local8Bit());
        *Answer = 0;
    close();
}

void addList_rass::slotCancelClicked()
{
        *Answer = 1;
    close();
}

//Класс ошибки БД
SQL_Exseption::SQL_Exseption(char *StrSQL, int res, QString str, int flag)
{
  myFlag = flag;
  QString str1 = QString::fromLocal8Bit(StrSQL);
printf ("SQL_Exseption::SQL_Exseption Место 001\n");
  switch (myFlag)
    {
    case 0:
      {
    printf ("SQL_Exseption::SQL_Exseption Место 002\n");
      QString str_e;
      uint len = str1.length();
      uint col = len/80;
      printf ("len= %d, col= %d\n", len, col);
      for (int i = 0; i < col ; ++i)
        {
        str_e += str1.mid(i * 80, 80) + QString::fromLocal8Bit("\n");
        printf ("str_e: %s\n", (const char*)str_e.local8Bit());
        }
      //Конец строки
      str_e += str1.mid(col * 80, len - col * 80);
      printf ("str_e последний: %s\n", (const char*)str_e.local8Bit());
      myMessage = str + QString::fromLocal8Bit("\n SQL-запрос: ") + str_e + QString::fromLocal8Bit("\n Ответ БД: ") + QString::fromLocal8Bit("").number(res);
      }
    break;
    case 1:
      myMessage = str + QString::fromLocal8Bit("\n") + str1;
    break;
    }
  printf ("myMessage: %s\n", (const char*)myMessage.local8Bit());
}

SQL_Exseption::~SQL_Exseption()
{
}
25K
10 июля 2007 года
Andreu_Re
16 / / 11.06.2007
Всем спасибо за советы.
QMessageBox падал т. к. вызов функций где он живет производился из конструктора. Переделал, теперь всё ОК.
Но почему его нельзя вызывать из конструктора для меня пока загадка?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог