Ich bin gerade dabei das 5332te Sudoku-Programm zu schreiben, als Einstieg in die Model/View Architektur.
Hierbei habe ich ein Problem:
Ich habe einen View für ein Sudoku gemacht, welcher mittlerweile das Sudoku schon einigermassen schön anzeigt, allerdings habe ich ein Problem mit Selektionen:
Code: Alles auswählen
void CSudokuView::setSelection( const QRect& rect, QItemSelectionModel::SelectionFlags command) {
QModelIndexList indexes;
int rows = model()->rowCount();
int cols = model()->columnCount();
for( int r = 0; r < rows; ++r) {
for( int c = 0; c < cols; ++c) {
QModelIndex index = model()->index( r, c, QModelIndex());
QRect itemRect = visualRect( index);
if( itemRect.intersects( rect))
indexes.append( index);
}
}
if (indexes.size() > 0) {
int firstRow = indexes[0].row();
int lastRow = indexes[0].row();
int firstColumn = indexes[0].column();
int lastColumn = indexes[0].column();
for (int i = 1; i < indexes.size(); ++i) {
firstRow = qMin(firstRow, indexes[i].row());
lastRow = qMax(lastRow, indexes[i].row());
firstColumn = qMin(firstColumn, indexes[i].column());
lastColumn = qMax(lastColumn, indexes[i].column());
}
QItemSelection selection(
model()->index(firstRow, firstColumn, QModelIndex()),
model()->index(lastRow, lastColumn, QModelIndex()));
selectionModel()->select( selection, command);
qDebug() << "Selected Size: " << selectionModel()->selectedIndexes().size();
} else {
QModelIndex noIndex;
QItemSelection selection(noIndex, noIndex);
selectionModel()->select(selection, command);
}
}
Allerdings ist die Liste die ich vom selectionModel durch den Aufruf von selectedIndexes zurückbekomme immer leer, egal was ich mache.
Habe ich in dieser Methode einen Fehler gemacht, oder soll ich den ganzen Source hochladen?
mfg
uhu01