void TableEditor::endEdit(int row,int col,bool accept,bool replace)
{
	Q3Table::endEdit(row,col,accept,replace);
	setCellContentFromEditor(row,col);
	if(isEmptyRow(row)) if(numRows()>1) removeRow(row);
	if(!isEmptyRow(numRows()-1)) addEmptyRow();
}
Beispiel #2
0
void Ledger::writeCsv(QTextStream &stream)
{
    int i, j;
    QString field;
    for( i=0; i<rowCount(); i++ ){
        if( i==rowCount()-1 && isEmptyRow(i) )
            break;
        for( j=0; j<NCOL; j++ ){
            if( !item(i,j) || item(i,j)->data(Qt::EditRole).isNull() )
                field = "";
            else if( j==COL_DATE )
                field = item(i,j)->data(Qt::EditRole).toDate().toString(Qt::ISODate);
            else if( j==COL_PRICE )
                field.setNum(item(i,j)->data(Qt::EditRole).toDouble(),'f',2);
            else{
                field = item(i,j)->data(Qt::EditRole).toString();
                if( field.contains( QRegularExpression("[\",\n]") ) ){
                    field.replace("\"", "\"\"");
                    field.prepend(QChar('\"'));
                    field.append(QChar('\"'));
                }
            }
            stream << field;
            if(j==NCOL-1) stream << '\n';
            else stream << ',';
        }
    }
    stream.flush();
    undoStack->setClean();
}
QString Matrix::saveText()
{
QString text = "<data>\n";
int cols=d_table->numCols();
int rows=d_table->numRows();
	
for (int i=0; i<rows; i++)
	{
	if (!isEmptyRow(i))
		{
		text+=QString::number(i)+"\t";
		for (int j=0; j<cols-1; j++)
			text+=d_table->text(i,j) + "\t";
		
		text+=d_table->text(i,cols-1)+"\n";
		}
	}	
return text + "</data>\n";
}
QString Matrix::saveText()
{
	QString out_text = "<data>\n";
	int cols = numRows();
	int rows = numCols();

	for(int i=0; i<rows; i++)
	{
		if (!isEmptyRow(i))
		{
			out_text += QString::number(i)+"\t";
			for(int j=0; j<cols-1; j++)
				out_text += text(i, j) + "\t";

			out_text += text(i,cols-1)+"\n";
		}
	}
	return out_text + "</data>\n";
}