QTableWidget und QIntValidator

Alles rund um die Programmierung mit Qt
Antworten
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

QTableWidget und QIntValidator

Beitrag von Marco812 »

Hallo,

in einem QTableWidget habe ich in der ersten Spalte eine QCheckBox und in der zweiten Spalte ist ein QLineEdit bzw. kein spezielles Widget gesetzt, also Standard.

Wie kann ich in der zweiten Spalte in Abhängigkeit der QCheckBox einen QIntValidator setzen?
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Kannst Du denn nach dem Erstellen des TableWidget mit seinen Daten, etwas im TableWidget verändern? ModelIndex()??? oder Index()?

Wie kommst Du denn bisher an den aktuellen Wert der CheckBoxen ran?
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Das mache ich in etwa so:

Code: Alles auswählen

void Table::tableDataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight){
topLeft.model()->sibling(row, 0, topLeft).data(Qt::DisplayRole).toInt();
topLeft.model()->sibling(row, 1, topLeft).data(Qt::DisplayRole).toInt();
}
also über QModelIndex. Der Rest erfolgt im QItemDelegate, analog zu dem was in der [FAQ] QTableWidget Tipps und Tricks, Delegates beschrieben ist.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Also wie der Validator im QItemDelegate gesetzt wird ist mir klar, das mache ich so:

Code: Alles auswählen

QWidget *TableDelegate::createEditor(QWidget *parent,
										const QStyleOptionViewItem &option,
										const QModelIndex &index) const
{
	if (index.column() == 0)
	{
		// QCheckBox erstellen
	}
	else if (index.column() == 1)
	{
		QLineEdit *lineEdit = new QLineEdit( parent );
		lineEdit->setValidator(new QIntValidator( 0, 500, lineEdit ));
		connect(lineEdit, SIGNAL(editingFinished()), this, SLOT(commitAndCloseEditor()));
		return lineEdit;
	}
	else
	{
        return QItemDelegate::createEditor(parent, option, index);
    }
}
Wie und wo kann ich aber jetzt einen anderen QIntValidator(min/max) setzen, wenn sich der Wert der QCheckBox ändert?
Antworten