Problem mit QSelectionModel

Verschiedenes zu Qt
Antworten
uhu01
Beiträge: 150
Registriert: 10. Juli 2005 20:46

Problem mit QSelectionModel

Beitrag von uhu01 »

Hy!

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);
	}
}
Dies ist meine setSelection Methode. Durch debuggen haben ich festgestellt, dass die beiden Indizes die ich der QItemSelection übergebe genau denen entsprechen, die benötigt werden. (Zumindest werden die richigen Werte an deren Konstruktoren übergeben)

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
Antworten