Seite 1 von 1

[! gelöst !]setSelectionBehavior KLAPPT NICHT !!

Verfasst: 13. April 2006 11:58
von shader76
Hallo zusammen,

Ich habe ein ein Table Widget mit 2 Columns.
wie erreiche ich das in meinem TableWidget bei der Selektion des Columns0 gleichzeitig auch der Column1 ausgewählt wird ?

Verfasst: 13. April 2006 12:57
von Alci
Hi,

versuchs mal mit:

Code: Alles auswählen

setSelectionBehavior(QAbstractItemView::SelectRows);
MfG, Alci.

Verfasst: 13. April 2006 13:01
von shader76
Hi Alci

habs versucht klappt aber nicht :?

Code: Alles auswählen

ui.myTable->setSelectionBehavior(QAbstractItemView::SelectRows);

Verfasst: 18. April 2006 08:58
von shader76
SelectionBehaviour und SelectionMode sind in den Properties als SelectRows und SingleSelection eingestellt, jedoch kann ich keine ganze reihe auswählen, warum ?

Code: Alles auswählen

#include "test01.h"
#include <QHeaderView>
#include <QTableWidget>
#include <QAbstractItemView>

test01::test01(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
	ui.setupUi(this);

	ui.domainTxt->setGeometry(10,10,207,22);
	setFixedSize(520,260);

	ui.addBtn->setText("Hinzufügen");
	ui.updateBtn->setText("Ändern");
	ui.delBtn->setText("Löschen");

	setTabOrder(ui.domainTxt,ui.IpTxt);
	setTabOrder(ui.IpTxt,ui.addBtn);
	setTabOrder(ui.addBtn,ui.myTable);
	
	ui.myTable->setColumnCount(2);
    ui.myTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
	ui.myTable->verticalHeader()->hide();
	ui.myTable->horizontalHeader()->hide();
	ui.myTable->setShowGrid(false);

	ui.myTable->setSelectionBehavior( QAbstractItemView::SelectRows );
	ui.myTable->setSelectionMode( QAbstractItemView::SingleSelection );
		
}

test01::~test01()
{

}

void test01::on_addBtn_clicked()
{
	QString s1 = ui.domainTxt->text();
	QString s2 = ui.IpTxt->text();

	QTableWidgetItem *file1 = new QTableWidgetItem(s1);
	file1->setFlags(Qt::ItemIsEnabled);
	QTableWidgetItem *file2 = new QTableWidgetItem(s2);
	file2->setFlags(Qt::ItemIsEnabled);

	int row = ui.myTable->rowCount();
	ui.myTable->insertRow(row);
	ui.myTable->setItem(row, 0, file1);
	ui.myTable->setItem(row, 1, file2);
}

void test01::on_myTable_currentItemChanged()
{
	int row = ui.myTable->currentRow();
	ui.domainTxt->setText(ui.myTable->item(row,0)->text());
	ui.IpTxt->setText(ui.myTable->item(row,1)->text());
}

Ich würde halt gerne wenn ich ein Item anwähle das er mir die ganze Reihe selektiert.

Verfasst: 18. April 2006 14:40
von shader76
Kann ich davon ausgehen dass es diese Option nicht gibt oder warum antwortet mir keiner :?: :?: :?:

Verfasst: 18. April 2006 15:01
von macman
shader76 hat geschrieben:Kann ich davon ausgehen dass es diese Option nicht gibt oder warum antwortet mir keiner :?: :?: :?:
Vielleicht weil nicht jeder gleich alles stehen und liegen lässt, um dein Problem nach zu vollziehen :-)

Ich würde mal vermuten das sich hier SelectRows und SingleSelection in die Quere kommen. Bei einer QTable ist doch jede Zelle ein Item, also heißt SelectRows mehrere Items und SingleSelection verbietet das wieder. Was passiert denn wenn Du SingleSelection weg lässt?

Verfasst: 18. April 2006 15:14
von shader76
das habe ich mittlerweile rausgelassen, ich sehe auch durch die currentitemchanged funktion das er mir die ganze reihe selektiert nur wird das nicht angezeigt bzw blau hinterlegt das ich die auswahl dementsprechend erkennen kann.

Verfasst: 19. April 2006 09:20
von shader76
habs hinbekommen, falls interesse besteht zeige ich gerne wie

Verfasst: 30. Juni 2006 11:05
von rm4711
shader76 hat geschrieben:habs hinbekommen, falls interesse besteht zeige ich gerne wie
Na, dann werde ich das mal übernehmen:

ersetze

Code: Alles auswählen

file1->setFlags(Qt::ItemIsEnabled); 
durch

Code: Alles auswählen

file1->setFlags(file1->flags() & ~Qt::ItemIsEditable); 
wenn die Editierbarkeit auf Zellebene kontrollierbar sein soll, und es fluppt. :)

Gruß aus Köln!