Wiki Markup |
---|
{alias:qtablewidget} |
Name
qtablewidget — spreadsheet-like table with rows and columns
...
Populating the table is usually a matter of creating QTableWidgetItem qtablewidgetitem and inserting them into row and column positions using qsetitem.
...
No Format | ||||
---|---|---|---|---|
| ||||
{ top-left-row top-left-column bottom-right-row bottom-right-column }
|
...
No Format | ||||
---|---|---|---|---|
| ||||
set table [qtable]
...
set selection [qselection $table]
|
Arguments
rows
The number of rows in the table.
columns
The number of columns in the table.
Examples
Ex.1: Simple Table
...
No Format | ||||
---|---|---|---|---|
| ||||
# Create toplevel window with table inside
set w [qwidget]
qsetwindowtitle QTableWidget
qvboxlayout {
set table [qtablewidget 3 3 ] ; # 3 rows and column
# Create horizontal labels
qsethorizontalheaderlabel $table 0 "Name" ; # column 0
qsethorizontalheaderlabel $table 1 "Company" ; # column 1
qsethorizontalheaderlabel $table 2 "Dept" ; # column 2
# Insert table items with text. Supply text on construction
set nameitem [qtablewidgetitem "John Fielding"]
qsetitem $table 0 0 $nameitem ; # Row 0, column 0
# Assign text to table item after creating it.
set companyitem [qtablewidgetitem]
qsettext $companyitem HAL
qsetitem $table 0 1 $companyitem
# Read text in table item
set item [qitem $table 0 1] ; # Item in position 0, 1
set company [qtext $item]
puts "Company is $company"
}
qshow $w
|
...
No Format | ||||
---|---|---|---|---|
| ||||
# This proc fills in values in the qlineedits corresponding to the
# selection
proc update_selection { } {
# Retrieve list with corner cells of selection :
# toprow, topcolumn, bottomrow, bottomcolumn
set sel [qselection $::table]
if { $sel == "" } return
# Now restore each lineedit in turn, setting the text to the proper
# cell value
qsettext $::toprow [lindex $sel 0]
qsettext $::leftcol [lindex $sel 1]
qsettext $::bottomrow [lindex $sel 2]
qsettext $::rightcol [lindex $sel 3]
# Display state if checked item
set checkstate [qcheckstate $::checkitem]
qsettext $::checkinfo $checkstate
}
# Toplevel window
set tablewindow [qwidget ]
qsetattribute deleteonclose
qsetwindowtitle "Table with Widgets" ; # Title
qhboxlayout {
# Create a table wit 5 rows and columns
set table [qtablewidget 5 5 ]
# Give the table a stretchfactor of 100 inside the layout.
# This will make the table rather than the other widgets stretch when resizing the window
#
qsetstretchfactor $table 100
# Make some headers along top and left
qsethorizontalheaderlabel $table 0 "Column 0"
qsethorizontalheaderlabel $table 1 "Column 1"
qsethorizontalheaderlabel $table 2 "Column 2"
# Create some simple text items
set item [qtablewidgetitem "First Item"]
qsetitem $table 0 0 $item
set checkitem [qtablewidgetitem "Checkable Item"]
qsetcheckstate $checkitem checked
qsetitem $table 1 1 $checkitem
# Create disabled item. The item state can be set using
# one of the following flags :
# "isselectable", "iseditable", "isdragenabled", "isdropenabled", "isusercheckable", "isenabled", "istristate", "0"
set disableditem [qtablewidgetitem Disabled]
qsetflags $disableditem 0
qsetitem $table 1 0 $disableditem
# Create some widgets and insert into table
set label [qlabel "Label"]
qsetcellwidget $table 2 2 $label
set combo [qcombobox]
qadditems $combo { Red Green Blue }
qsetcellwidget $table 2 0 $combo
# Now create a group of lineedits that show which cells are selected
qgroupbox "Selection"
qgridlayout {
# The following lines simply make various lineedits
# and tags them for retrieval in update_selection
qlabel "Top row"
set toprow [qlineedit]
qrewindcolumn
qnextrow
qlabel "Bottom row"
set bottomrow [qlineedit]
qrewindcolumn
qnextrow
qlabel "Left col"
set leftcol [qlineedit]
qrewindcolumn
qnextrow
qlabel "Right col"
set rightcol [qlineedit]
qrewindcolumn
qnextrow
qlabel "Check state"
set checkinfo [qlineedit]
qrewindcolumn
qnextrow
qpushbutton "Update" { update_selection }
}
}
qshow $tablewindow
|
...