Добрый день,уважаемые форумщики!!!!
Хочу организовать копирование данных из n-го кол-ва таблиц...И вот хочу чтобы организовать ProgressBar для отображения процесса копирования. Делаю так:
C++ (Qt)
#ifndef TBL_H
#define TBL_H
#include <QtGui/QDialog>
#include <QSqlQueryModel>
#include <QProgressBar>
namespace Ui {
class tbl;
}
class tbl : public QDialog {
Q_OBJECT
public:
tbl(QWidget *parent = 0);
~tbl();
QProgressBar *progress;
void copySmeta(int rf_IDSmetiCopy,int rf_IDSmetiNew);
int sch;
protected:
void changeEvent(QEvent *e);
private:
Ui::tbl *m_ui;
private slots:
void slotCopy();
void slotProgress();
signals:
void copyEndTabl();
#endif // TBL_H
};
C++ (Qt)
#include "tbl.h"
#include "ui_tbl.h"
#include <QMessageBox>
#include <QSqlQuery>
#include <QSqlError>
tbl::tbl(QWidget *parent) :
QDialog(parent),
m_ui(new Ui::tbl)
{
m_ui->setupUi(this);
sch=0;
progress=new QProgressBar(this);
connect(m_ui->pushButton,SIGNAL(clicked()),this,SLOT(slotCopy()));
}
tbl::~tbl()
{
delete m_ui;
}
void tbl::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
m_ui->retranslateUi(this);
break;
default:
break;
}
}
void tbl::slotCopy(){
progress->show();
connect(this,SIGNAL(copyEndTabl()),this,SLOT(slotProgress()));
copySmeta(16,17);
}
void tbl::copySmeta(int rf_IDSmetiCopy,int rf_IDSmetiNew){
QString st="";
QString st1="";
QSqlQuery query;
query.exec("INSERT INTO [0_Dohod](rf_IDSmeti,rf_IDSprDohod,Sum) "
" SELECT "+st.setNum(rf_IDSmetiNew)+",rf_IDSprDohod,Sum FROM [0_Dohod] "
" WHERE rf_IDSmeti="+st1.setNum(rf_IDSmetiCopy)+"");
if(query.lastError().isValid()){
QMessageBox::critical(this,tr("Ошибка SQL"),query.lastError().text());
return;
}
else
emit copyEndTabl();
query.clear();
query.exec("INSERT INTO [0_Rashod](rf_IDSmeti,rf_CodeGroupRashod,rf_CodeIDSprRashod,Sum) "
" SELECT "+st.setNum(rf_IDSmetiNew)+",rf_CodeGroupRashod,rf_CodeIDSprRashod,Sum FROM [0_Rashod] "
" WHERE rf_IDSmeti="+st1.setNum(rf_IDSmetiCopy)+"");
if(query.lastError().isValid()){
QMessageBox::critical(this,tr("Ошибка SQL"),query.lastError().text());
return;
}
else
emit copyEndTabl();
query.clear();
query.exec("INSERT INTO [1_SvodZP_osn](rf_IDSmeti,rf_CodeUsl,rf_IDCatPerson,count_positions,FOT_ETS, "
" nadb_NeprRab,nadb_vrednost,nadb_RabNaSele,[FOT_night-time], "
" FOT_weekend,FOT_otpusk,FOT_PovishKvalif,Itog,FOT_monthly_14, "
" FOT_monthly_30,Premirovanie,Napryagennost,PovishKvalif,FOT_itogo, "
" Prevish_NormNagruzki,FOT_year,PlanZakaz,SvPlanZakaz) "
" SELECT "+st.setNum(rf_IDSmetiNew)+",rf_CodeUsl,rf_IDCatPerson,count_positions,FOT_ETS, "
" nadb_NeprRab,nadb_vrednost,nadb_RabNaSele,[FOT_night-time], "
" FOT_weekend,FOT_otpusk,FOT_PovishKvalif,Itog,FOT_monthly_14, "
" FOT_monthly_30,Premirovanie,Napryagennost,PovishKvalif,FOT_itogo, "
" Prevish_NormNagruzki,FOT_year,PlanZakaz,SvPlanZakaz "
" FROM [1_SvodZP_osn] "
" WHERE rf_IDSmeti="+st1.setNum(rf_IDSmetiCopy)+"");
if(query.lastError().isValid()){
QMessageBox::critical(this,tr("Ошибка SQL"),query.lastError().text());
return;
}
else
emit copyEndTabl();
query.clear();
query.exec("INSERT INTO [1_SvodZP_dop](rf_IDSmeti,rf_IDCatDopPerson,rf_IDCatPerson,count_positions,FOT_ETS, "
" nadb_NeprRab,nadb_vrednost,nadb_RabNaSele,[FOT_night-time], "
" FOT_weekend,FOT_otpusk,FOT_PovishKvalif,Itog,FOT_monthly_14, "
" FOT_monthly_30,Premirovanie,Napryagennost,PovishKvalif,FOT_year, "
" PlanZakaz,SvPlanZakaz) "
" SELECT "+st.setNum(rf_IDSmetiNew)+",rf_IDCatDopPerson,rf_IDCatPerson,count_positions,FOT_ETS, "
" nadb_NeprRab,nadb_vrednost,nadb_RabNaSele,[FOT_night-time], "
" FOT_weekend,FOT_otpusk,FOT_PovishKvalif,Itog,FOT_monthly_14, "
" FOT_monthly_30,Premirovanie,Napryagennost,PovishKvalif,FOT_year, "
" PlanZakaz,SvPlanZakaz "
" FROM [1_SvodZP_dop] "
" WHERE rf_IDSmeti="+st1.setNum(rf_IDSmetiCopy)+"");
if(query.lastError().isValid()){
QMessageBox::critical(this,tr("Ошибка SQL"),query.lastError().text());
return;
}
else
emit copyEndTabl();
// и т.д.
}
void tbl::slotProgress(){
sch=sch+25;
progress->setValue(sch);
}
Все вроде работает....Но может как-нить лучше все-же по другому сделать???
Просто первый раз с ProgressBar-ом работаю,да и программирую недавно, так что не ругайте за глупые вопросы