Russian Qt Forum
Ноябрь 24, 2024, 04:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Непонятки с кодом  (Прочитано 2783 раз)
crocus
Гость
« : Октябрь 22, 2006, 12:45 »

Помогите разобраться с кодом
Код:
QString phon;
for ( int i = 0; i < model_phon->rowCount(); ++i )
{
QModelIndex indexphon = model_phon->index( i, 0 );
phon = model_phon->data( indexphon ).toString();
textrep.replace( phon, "" );
}
         QString textrepout;
QTextStream in(&textrep);
QTextStream out(&textrepout);
while (!in.atEnd()) {
QString line = in.readLine();
int j = 5 - line.count(QRegExp("\\t"));
for (int i = 0; i < j; ++i) {
line.append("\t");
}
if (line.contains(QRegExp("\\d{5,}")))
out << text + "\t" << line << "\n";
}
textedit->setPlainText(textrepout);

Такая конструкция работает.
А вот эта нет:
Код:
while (!in.atEnd()) {
QString line = in.readLine();
int j = 5 - line.count(QRegExp("\\t"));
for (int i = 0; i < j; ++i) {  // это нужно чтоб потом загнать текстовый файл в таблицу БД
line.append("\t");
}
for ( int i = 0; i < model_phon->rowCount(); ++i )
{
QModelIndex indexphon = model_phon->index( i, 0 );
phon = model_phon->data( indexphon ).toString();
if (!line.contains(phon))
out << text + "\t" << line << "\n";
}
}

Здесь на выходе получаем некоторое  количество строк с табуляцией
Кажется код в комментариях не нуждается, но если возникнут вопросы проясню.
Записан
crocus
Гость
« Ответ #1 : Октябрь 25, 2006, 03:13 »

Вот еще один затуп:
По предыдущему коду обработанный текст загонялся в textedit,
а сейчас параллельно и в tablewidget.
Но как-то с косяком т.е. первая строка корректна       , а дальше что попало:




И вот код как делалось:
Код:
void NewspaperWindow::autoProc()
{
listTable->clear();
QStringList folders;
folders << "0" << "1" << "2" << "3" << "4";

QStringList files;
filesTable->setRowCount( 0 );

QString fileName ;
QString unitName ;

for (int i = 0; i < folders.size(); ++i){
text = folders.at(i).toLocal8Bit().constData(); ////// здесь получаем значение text


Код:
QString textrepout;
QTextStream in(&textrep); //кол-во строк 262
QTextStream out(&textrepout);
while (!in.atEnd()) {
QString line = in.readLine();
int j = 6 - line.count(QRegExp("\\t"));
for (int i = 0; i < j; ++i) {
line.append("\t");
}
int row = listTable->rowCount(); // current row count
if (line.contains(QRegExp("\\d{5,}"))){
out << text << "\t" << line << "\n";
line = text + "\t" + line; ////// а здесь используем значение text
list = line.split(QRegExp("\\t"));
listTable->setRowCount(row+1);
showList(list, row); // А здесь кол-во строк удваивается
statusBar()->showMessage( line );
list.clear();
line.clear();
}
}
textedit->setPlainText(textrepout);
}
bool NewspaperWindow::showList( const QStringList &list, const int &j)
{
listTable->insertRow(j);
for ( int i = 0; i < listTable->columnCount(); ++i )
{
QTableWidgetItem *listNameItem = new QTableWidgetItem( list[ i ] );
listTable->setItem( j, i, listNameItem );
}
return true;
}
void NewspaperWindow::createListTable()
{
listTable = new QTableWidget( 0, 6);
listTable->setSortingEnabled ( true );
QStringList labels;
labels << tr( "Num_flats" ) << tr( "Prefix_Street" ) << tr( "Street" )<< tr( "Comments" ) << tr( "Phon" )<< tr( "Phon_2") ;
listTable->setHorizontalHeaderLabels( labels );
listTable->horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
listTable->setShowGrid( true );
}


Текст в таком виде:
Код:

1 Продам 1ю квартиру ул. Бестужева ср. эт., 32 кв., хор. сост., пан 922878
1 Район ф. Вторая речка кв. м, сдача дома  зима, без отделки,10 эт. 89242368688
0 1ком. Каплунова ср/эт, 32,2, л/з. 89046251640, 528608
0 Луговая 45/2, 10/14, 38/19/6, л/з 6 м. 89242157777
1 к. квру 33 м п. Славянка, кап. рем., юг, л/з. 89147919602
1 Продаю 1комн. квартиру. 976501
2 Перекопск., 6/9 к, лод/6 м, вид, тел., 35/17/7, 56 у.е. 552801
1 Продаю квартиру новост., Русская 1ком., еврорем., 42 кв. м. 907898
4 Русская 1в/12 п, 32/18/8,5, х/с, срочно, 49500


столбцы в строках разделены табуляцией.
Пояснение к рисункам "Prefix_Street"- столбец, если улица не распознана.

В общем видно что сначала загоняется первый столбец каждой строки,  а дальше корректно.
Думаю намудрил со вставкой в listTable, но не пойму в каком месте.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 21.