9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
|
|
1
|
Непонятная ошибка
04.09.2012, 17:33. Показов 1640. Ответов 2
код main.cpp
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #include <o.cpp>
#include <o.moc>
MyEdit *label4;
MyThread *TR;
void QTreeView::currentChanged ( const QModelIndex & current, const QModelIndex & previous ){
t->setCursor(Qt::WaitCursor);
stopped=true;
if(firststart==true){stopped=false;firststart=false;}
while(stopped==true);
siz=0;
list="";
qnFileCount=0;
ilist=0;
for(int i=0;i<100;i++){listsize[i]=0;}
label4->clear();
cur=current;
pre=previous;
TR->start();
t->setCursor(Qt::ArrowCursor);
}
int main(int argc, char *argv[])
{ codec = QTextCodec::codecForName("windows-1251");
QApplication app(argc, argv);
firststart=true;
QMainWindow w;
t=new QTreeView();TR=new MyThread();
d1=new QDockWidget;
d2=new QDockWidget;
QWidget *hide1=new QWidget;
QWidget *hide2=new QWidget;
m = new QDirModel;
label=new QLabel;
label1=new QLabel;
label2=new QLabel;
label3=new QLabel;
label4=new MyEdit();
label4->setReadOnly(true);
QVBoxLayout* box=new QVBoxLayout();
QGroupBox *groupBox = new QGroupBox(codec->toUnicode("Свойства:"));
d1->setTitleBarWidget(hide1);
d2->setTitleBarWidget(hide2);
t->setModel(m);
box->addWidget(label);
box->addWidget(label1);
box->addWidget(label2);
box->addWidget(label3);
box->addWidget(label4);
groupBox->setLayout(box);
d1->setWidget(t);
d2->setWidget(groupBox);
w.addDockWidget(Qt::DockWidgetArea::LeftDockWidgetArea,d1);
w.addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea,d2);
w.resize(1000,500);
m->setFilter(QDir::Filter::AllDirs);
w.show();
QObject::connect(TR,SIGNAL(MyOut()),
label4,SLOT(MyOut));
return app.exec();
}; |
|
o.cpp
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
| #include <QtCore>
#include <QtGui>
QString path;
QLabel *label,*label1,*label2,*label3;
QTreeView *t;
QDockWidget *d1;
QDockWidget *d2;
QDirModel *m;
QTextCodec *codec;
qint64 qnFileCount;
float siz;
QModelIndex cur;
QModelIndex pre;
bool stopped;
bool firststart;
QString list;
QString str;
qint64 listsize[1000];int ilist;
void FindFileAndSize( QString szDir)
{ if(stopped==false){
QDir dir( szDir);
foreach( QFileInfo fi, dir.entryInfoList())
{
QString szFileName = fi.absoluteFilePath();
if( fi.isDir())
{
if( fi.fileName()=="." || fi.fileName()=="..")continue;
FindFileAndSize( szFileName);
}
if( fi.isFile()){qnFileCount++;siz=siz+fi.size();
}
}}
}
int SubDir( QString szDir)
{ int i;
if(stopped==false){
QDir dir( szDir);
foreach( QFileInfo fi, dir.entryInfoList())
{
QString szFileName = fi.absoluteFilePath();
if( fi.isDir())
{
if( fi.fileName()=="." || fi.fileName()=="..")continue;
i++;
}
}}
return i;
}
void FindFileTypeSize( QString szDir)
{ QString fname;
if(stopped==false){
QDir dir( szDir);
foreach( QFileInfo fi, dir.entryInfoList())
{
QString szFileName = fi.absoluteFilePath();
if( fi.isDir())
{
if( fi.fileName()=="." || fi.fileName()=="..")continue;
FindFileTypeSize( szFileName);
}
if( fi.isFile()){fname=fi.fileName();
if(fname.contains(str)){listsize[ilist]=listsize[ilist]+fi.size();}
}
}}
}
void FindFileType( QString szDir)
{ if(stopped==false){
QDir dir( szDir);
foreach( QFileInfo fi, dir.entryInfoList())
{
QString szFileName = fi.absoluteFilePath();
if( fi.isDir())
{
if( fi.fileName()=="." || fi.fileName()=="..")continue;
FindFileType( szFileName);
}
if( fi.isFile()){
str=fi.fileName();
for(int i=str.length();i>0;i--)
{
if(str[i]=='.'){
str.remove(0,i);
if(list.contains(str)==false){
list.append(str);
FindFileTypeSize(szDir);
ilist++;
}if(str.length()-i>5){break;}
};
};
}
}}
}
float rou(float fl){fl=fl*100;fl=qRound(fl);fl=fl/100;return fl;}
class MyEdit: public QTextEdit{Q_OBJECT
public slots:void MyOut(int ilist,QString list,qint64 listsize[]){
int b=ilist-1;QString strlist='.';
int l=list.length()-1;
while(l>=0){
strlist.prepend(list[l]);
if(list[l]=='.'){
append(strlist);
append(QString::number(listsize[b]));
b--;
strlist="";}
l--;
}MyEdit::append("dad");
}
};
class MyThread: public QThread{Q_OBJECT
signals:void MyOut(int ilist,QString list,qint64 listsize[]);
public:void sendMyOut(int ilist,QString list,qint64 listsize[]){emit MyOut(ilist,list,listsize);};
void run(){
QString sizeS;
QFileInfo info=m->fileInfo(cur);
label3->setText(codec->toUnicode("Файлы: идёт поиск Папки: идёт поиск "));
label2->setText(codec->toUnicode("Размер: идёт поиск "));
label->setText(codec->toUnicode("Название: ")+m->fileName(cur));
label1->setText(codec->toUnicode("Полный путь: ")+info.path()+info.fileName());
FindFileAndSize(info.path()+info.fileName());
if(siz<999){sizeS=QString::number(siz)+codec->toUnicode(" байт");}
if(siz>999){siz=siz/1024;sizeS=QString::number(rou(siz))+codec->toUnicode(" Кбайт");}
if(siz>999){siz=siz/1024;sizeS=QString::number(rou(siz))+codec->toUnicode(" Мбайт");}
if(siz>999){siz=siz/1024;sizeS=QString::number(rou(siz))+codec->toUnicode(" Гб");}
label2->setText(codec->toUnicode("Размер: ")+sizeS);
label3->setText(codec->toUnicode("Файлы: ")+QString::number(qnFileCount)+codec->toUnicode("шт. Папки: ")+QString::number(SubDir(info.path()+info.fileName()))+codec->toUnicode("шт."));
FindFileType(info.path()+info.fileName());
sendMyOut(ilist,list,listsize);
firststart=true;stopped=false;
}
}; |
|
Выводит ошибку о том что я переопределяю классы О_о.
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| Ошибка 1 error LNK2005: "void __cdecl FindFileAndSize(class QString)" (?FindFileAndSize@@YAXVQString@@@Z) уже определен в main.obj o.obj
Ошибка 2 error LNK2005: "int __cdecl SubDir(class QString)" (?SubDir@@YAHVQString@@@Z) уже определен в main.obj o.obj
Ошибка 3 error LNK2005: "void __cdecl FindFileTypeSize(class QString)" (?FindFileTypeSize@@YAXVQString@@@Z) уже определен в main.obj o.obj
Ошибка 4 error LNK2005: "void __cdecl FindFileType(class QString)" (?FindFileType@@YAXVQString@@@Z) уже определен в main.obj o.obj
Ошибка 5 error LNK2005: "float __cdecl rou(float)" (?rou@@YAMM@Z) уже определен в main.obj o.obj
Ошибка 6 error LNK2005: "bool firststart" (?firststart@@3_NA) уже определен в main.obj o.obj
Ошибка 7 error LNK2005: "__int64 qnFileCount" (?qnFileCount@@3_JA) уже определен в main.obj o.obj
Ошибка 8 error LNK2005: "class QDockWidget * d1" (?d1@@3PAVQDockWidget@@A) уже определен в main.obj o.obj
Ошибка 9 error LNK2005: "float siz" (?siz@@3MA) уже определен в main.obj o.obj
Ошибка 10 error LNK2005: "class QLabel * label" (?label@@3PAVQLabel@@A) уже определен в main.obj o.obj
Ошибка 11 error LNK2005: "class QTextCodec * codec" (?codec@@3PAVQTextCodec@@A) уже определен в main.obj o.obj
Ошибка 12 error LNK2005: "class QLabel * label1" (?label1@@3PAVQLabel@@A) уже определен в main.obj o.obj
Ошибка 13 error LNK2005: "__int64 * listsize" (?listsize@@3PA_JA) уже определен в main.obj o.obj
Ошибка 14 error LNK2005: "int ilist" (?ilist@@3HA) уже определен в main.obj o.obj
Ошибка 15 error LNK2005: "class QTreeView * t" (?t@@3PAVQTreeView@@A) уже определен в main.obj o.obj
Ошибка 16 error LNK2005: "class QLabel * label2" (?label2@@3PAVQLabel@@A) уже определен в main.obj o.obj
Ошибка 17 error LNK2005: "bool stopped" (?stopped@@3_NA) уже определен в main.obj o.obj
Ошибка 18 error LNK2005: "class QDirModel * m" (?m@@3PAVQDirModel@@A) уже определен в main.obj o.obj
Ошибка 19 error LNK2005: "class QDockWidget * d2" (?d2@@3PAVQDockWidget@@A) уже определен в main.obj o.obj
Ошибка 20 error LNK2005: "class QLabel * label3" (?label3@@3PAVQLabel@@A) уже определен в main.obj o.obj
Ошибка 21 error LNK2005: "class QString path" (?path@@3VQString@@A) уже определен в main.obj o.obj
Ошибка 22 error LNK2005: "class QString str" (?str@@3VQString@@A) уже определен в main.obj o.obj
Ошибка 23 error LNK2005: "class QModelIndex pre" (?pre@@3VQModelIndex@@A) уже определен в main.obj o.obj
Ошибка 24 error LNK2005: "class QString list" (?list@@3VQString@@A) уже определен в main.obj o.obj
Ошибка 25 error LNK2005: "class QModelIndex cur" (?cur@@3VQModelIndex@@A) уже определен в main.obj o.obj
Ошибка 26 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) уже определен в LIBCMT.lib(typinfo.obj) msvcrt.lib
Ошибка 27 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) уже определен в LIBCMT.lib(typinfo.obj) msvcrt.lib
Предупреждение 28 warning LNK4098: библиотека по умолчанию "msvcrt.lib" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library LIBCMT.lib
Ошибка 29 fatal error LNK1169: обнаружен многократно определенный символ - один или более D:\Games\Программирование\С++\Projects\QT1\Win32\Release\QT1.exe |
|
HELP!
0
|