Seite 1 von 1

[gelöst] QTableWidget -> unsichtbare Rahmen ?

Verfasst: 13. März 2009 15:14
von Exasperation
Hallo zusammen! Ich möchte in einem QDialog eine Tabelle anzeigen, die eine Shortcut-Hilfe darstellt. Also in der linken Spalte die Shortscuts, in der rechten Spalte die Funktion... So... dieses Fenster soll am Ende nur die Schrift enthalten, also keine Tabellenrahmen, keine weiße Farbe... Sondern nur diese Zuweisungen und als Hintergrundfarbe das Standard-Grau von Windows... Ist das theoretisch möglich? Man soll nicht mehr sehen dass es eine Tabelle ist, aber diese Zuweisungen sollen schön symmetrisch aussehen und mittig angeordnet werden...

Code: Alles auswählen

help_dialog::help_dialog()
{
	setWindowTitle( "Shortcuts" );
	setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool);


	QVBoxLayout *layout;
	layout = new QVBoxLayout();

	layout->setContentsMargins(1,1,1,1);

	QTableWidget* shortcut_table = new QTableWidget(5,2,this);
	shortcut_table->verticalHeader()->hide();
	shortcut_table->horizontalHeader()->hide();
	QTableWidgetItem* test_item = new QTableWidgetItem( "blablub" );
	shortcut_table->setItem(......)
....
....
....

	layout->addWidget( shortcut_table );
	setLayout( layout );

	setStyleSheet( "background-color:/*irgendeine Farbe*/" );
}
Habt ihr Vorschläge wie ich das mit einer QTableWidget bewerkstelligen kann oder gibt es da eine elegantere Methode?

Verfasst: 14. März 2009 17:45
von androphinx
das mit der hintergrundfarbe scheinst du ja schon hingekriegt zu haben... was hälst du eigentlich von der dokumentation von qt?

http://doc.trolltech.com/4.5/qtableview ... wGrid-prop

Mfg androphinx

EDIT: @moderatoren: wäre vllt. was für die tablewidget-faq....

Verfasst: 16. März 2009 09:54
von Exasperation
Vielen Dank, nach sowas hab ich gesucht, habs aber iwie nicht gesehen :roll:

Habe es aber mittlerweile doch anders gelöst und zwar in Form eines QDialog, den ich als Qt::Tool als Toolbox kennzeichne und die Zuweisungen in Form von Labels anbringe.

Code: Alles auswählen

setWindowTitle( "Controls" );
	setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool);

	QVBoxLayout *global_layout = new QVBoxLayout();
	global_layout->setContentsMargins(20,11,20,11);
	global_layout->setSpacing(5);
	
	QLabel *label_1 = new QLabel(this);
	label_1->setText("Menu controls");
	label_1->setAlignment(Qt::AlignHCenter);
	label_1->setContentsMargins(11,5,11,5);

	QLabel *label_2 = new QLabel(this);
	label_2->setText("3D controls");
	label_2->setAlignment(Qt::AlignHCenter);
	label_2->setContentsMargins(11,25,11,5);
	
	QHBoxLayout *hlayout_1 = new QHBoxLayout();
	hlayout_1->setSpacing(20);

	QHBoxLayout *hlayout_2 = new QHBoxLayout();
	hlayout_1->setSpacing(20);

	QLabel *label_left_1 = new QLabel(this);
	label_left_1->setText("Ctrl+O\nCtrl+C\nCtrl+E");
	label_left_1->setAlignment(Qt::AlignLeft);

	QLabel *label_right_1 = new QLabel(this);
	label_right_1->setText(".....");
	label_right_1->setAlignment(Qt::AlignRight);

	QLabel *label_left_2 = new QLabel(this);
	label_left_2->setText("W, A, S, D\nArrow Keys\nPage Up/Down");
	label_left_2->setAlignment(Qt::AlignLeft);

	QLabel *label_right_2 = new QLabel(this);
	label_right_2->setText("......");
	label_right_2->setAlignment(Qt::AlignRight);


	global_layout->addWidget(label_1);
	global_layout->addLayout(hlayout_1);
	global_layout->addWidget(label_2);
	global_layout->addLayout(hlayout_2);
	
	hlayout_1->addWidget( label_left_1 );
	hlayout_1->addWidget( label_right_1 );
	hlayout_2->addWidget( label_left_2 );
	hlayout_2->addWidget( label_right_2 );
	
	setLayout( global_layout );
Kann sein, dass ich es mir ein wenig umständlich gemacht habe, aber dafür dass ich vor einer Woche noch nicht mal von QT gehört hatte hab ich es doch ganz gut gelöst und das Ergebnis sieht auch schick aus :)