QT控件----tableWidget的常規使用


一、前言:
正常開發GUI會用到的一個控件就是列表,這里介紹的就是QT其中一個列表控件:tableWidget。
需要實現功能:表頭設置、內容顯示、新增行數據、刪除行數據及一些屬性的配置。
二、tableWidget屬性:

1、QHeaderView::QHeaderView(Qt::Orientation orientation,QWidget * parent = 0) 使用給定的方向和父對象,創建。
2、QHeaderView::~QHeaderView()析構函數
3int QHeaderView::count() const 返回有多少個區域(幾列或幾行)
4void QHeaderView::currentChanged(constQModelIndex & current, constQModelIndex & old)QAbstractItemView::currentChanged()的重新實現
5bool QHeaderView::event(QEvent * e)QObject::event()的重新實現。
6void QHeaderView::geometriesChanged()  [signal]幾何數據改變時,發射該信號
7void QHeaderView::headerDataChanged(Qt::Orientation orientation,int logicalFirst, int logicalLast)在給定方向上,從邏輯logicalFirst到邏輯logicalLast更新。
8int QHeaderView::hiddenSectionCount() const返回隱藏的區域數量。
9void QHeaderView::hideSection(int logicalIndex) 隱藏指定的區域
10int QHeaderView::horizontalOffset() const返回水平偏移量,如果是垂直頭則返回011void QHeaderView::initStyleOption(QStyleOptionHeader * option) const通過指定的選項option初始化本表頭。可以用該方法去設置子類表頭,不需要重新繪制表頭。
12bool QHeaderView::isClickable() const 表頭是否可點擊。可點擊時,點擊會排序。
13bool QHeaderView::isMovable() const表頭是否可移動。
14bool QHeaderView::isSectionHidden(int logicalIndex) const該區域是否隱藏。
15int QHeaderView::length() const 返回標題方向的長度
16int QHeaderView::logicalIndex(int visualIndex) const 返回可見字段的邏輯字段數。
17int QHeaderView::logicalIndexAt(int position) const 返回指定位置的邏輯字段數。
18int QHeaderView::logicalIndexAt(int x,int y) const 返回指定位置的邏輯字段數。
19void QHeaderView::moveSection(int from,int to)將第from移動到第to位置
20int QHeaderView::offset() const返回偏移量
21、Qt::Orientation QHeaderView::orientation() const返回是水平表頭還是垂直表頭
22void QHeaderView::paintSection(QPainter * painter, constQRect & rect, int logicalIndex) const使用給定painter和rect去繪制指定的字段
23、ResizeMode QHeaderView::resizeMode(int logicalIndex) const返回指定邏輯字段的大小調整模式
24void QHeaderView::resizeSection(int logicalIndex,int size) 調整指定邏輯字段的大小
25void QHeaderView::resizeSections(QHeaderView::ResizeMode mode)重新設置大小調整模式。
26bool QHeaderView::restoreState(constQByteArray & state)回復指定的狀態state,成功返回真,失敗返回假
27、QByteArray QHeaderView::saveState() const保存表頭狀態,用來去回復。
28void QHeaderView::sectionAutoResize(int logicalIndex,QHeaderView::ResizeMode mode)[signal] 當一個字段大小改變時,發送該信號。
29void QHeaderView::sectionClicked(int logicalIndex)[signal]當字段被點擊是,發送該信號
30void QHeaderView::sectionCountChanged(int oldCount,int newCount)[signal]當區字段量變化時(添加或刪除),發送該信號。
31void QHeaderView::sectionDoubleClicked(int logicalIndex)[signal]雙擊字段發送信號
32void QHeaderView::sectionEntered(int logicalIndex)[signal]鼠標在字段上並且按下左鍵,發送信號
33void QHeaderView::sectionHandleDoubleClicked(int logicalIndex)[signal]雙擊字段發送信號
34void QHeaderView::sectionMoved(int logicalIndex,int oldVisualIndex, int newVisualIndex)[signal]字段移動時 ,發送信號
35int QHeaderView::sectionPosition(int logicalIndex) const返回邏輯字段的所在相對於開頭的位置,如果邏輯字段隱藏了,返回-1。如果為水平表頭,返回相對的x坐標,如果為垂直表頭,返回相對的y坐標。
36void QHeaderView::sectionPressed(int logicalIndex)[signal]當字段被按下,發送信號
37void QHeaderView::sectionResized(int logicalIndex,int oldSize, int newSize)[signal]當字段大小改變時,發送信號
38int QHeaderView::sectionSize(int logicalIndex) const返回邏輯字段的大小
39、QSize QHeaderView::sectionSizeFromContents(int logicalIndex) const返回邏輯字段所在的區域的尺寸。
40int QHeaderView::sectionSizeHint(int logicalIndex) const返回一個邏輯字段合適的尺寸(推薦值)
41int QHeaderView::sectionViewportPosition(int logicalIndex) const返回邏輯字段可視位置
42void QHeaderView::sectionsAboutToBeRemoved(constQModelIndex & parent, int logicalFirst,int logicalLast)[protected slot]當邏輯字段被刪除時,調用該槽函數。
43bool QHeaderView::sectionsHidden() const如果字段被隱藏返回真
44void QHeaderView::sectionsInserted(constQModelIndex & parent, int logicalFirst,int logicalLast)[protected slot]當插入邏輯字段時,調用該槽函數
45bool QHeaderView::sectionsMoved() const字段被移動,返回真
46void QHeaderView::setClickable(bool clickable)設置表頭是否能被點擊
47void QHeaderView::setMovable(bool movable)設置表頭中字段是否能移動,如果設為假,表頭是固定的
48void QHeaderView::setOffset(int offset)設置表頭偏移量
49void QHeaderView::setOffsetToLastSection()設置偏移量,使最后一個字段可見
50void QHeaderView::setOffsetToSectionPosition(int visualIndex)設置給定位置的偏移量
51void QHeaderView::setResizeMode(ResizeMode mode)設置表頭大小變化時的約束模式
52void QHeaderView::setResizeMode(int logicalIndex,ResizeMode mode)設置指定邏輯字段大小變換的約束模式。
53void QHeaderView::setSectionHidden(int logicalIndex,bool hide)設置指定邏輯字段是否隱藏
54void QHeaderView::setSelection(constQRect & rect, QItemSelectionModel::SelectionFlags flags)設置規定rect范圍內字段以flags標志顯示。
55void QHeaderView::setSortIndicator(int logicalIndex,Qt::SortOrder order)指定字段按照指定方式排序。注意:有的字段不支持排序,可能會混亂。
56void QHeaderView::showSection(int logicalIndex)顯示指定的邏輯字段
57、QSize QHeaderView::sizeHint() const返回一個推薦值
58void QHeaderView::sortIndicatorChanged(int logicalIndex,Qt::SortOrder order)[signal]如果指定邏輯字段發生排序,發送該信號
59、Qt::SortOrder QHeaderView::sortIndicatorOrder() const返回排序方式
60int QHeaderView::sortIndicatorSection() const返回有排序的字段
61int QHeaderView::stretchSectionCount() const返回可以伸縮的字段的數量
62void QHeaderView::swapSections(int first,int second)交換字段
63int QHeaderView::verticalOffset() const返回垂直表頭的偏移,水平表頭返回0
64int QHeaderView::visualIndex(int logicalIndex) const返回給定邏輯字段的可見引索值
65int QHeaderView::visualIndexAt(int position) const返回指定位置的可見引索。

三、tableWidget初始化:

	ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);       // 整行選中的方式
	ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);    // 設置為可以選中單個目標
	ui.tableWidget->verticalHeader()->setVisible(false);                       // 隱藏行表頭 
	ui.tableWidget->resizeColumnsToContents();                                 // 列寬與內容匹配
	ui.tableWidget->resizeRowsToContents();                                    // 行高與內容匹配
	ui.tableWidget->resizeColumnToContents(0);                                 // 自動調整列寬
	ui.tableWidget->setColumnCount(4);                                         // 設置列數
	QHeaderView* widthlist = ui.tableWidget->horizontalHeader();               //創建列寬list
	widthlist->setStyleSheet("QHeaderView::section{border:0px;background-color:#f2f1f7;color:#7f7f7f;}");//設置顏色
	widthlist->resizeSection(0, 80);									                                  // 設置列寬
	widthlist->resizeSection(1, 150);
	widthlist->resizeSection(2, 400);
	widthlist->setStretchLastSection(true);										                      // 最后一欄自適應寬度
	QStringList list;                                                        // 創建列表頭list
	list << "NO" << "Time" << "Value" << "Type";
	ui.tableWidget->setHorizontalHeaderLabels(list);
	ui.tableWidget->show();

四、添加內容:

			//===============控件tableWidget操作新增數據===========================
			int rowcount = ui.tableWidget->rowCount();           //獲取當前行數
			if (rowcount < i+1)                                  //如果添加的數據所在的行數大於實際控件存在的列數,則新增一列
			{
				ui.tableWidget->insertRow(rowcount);                 //新增行
			}
			ui.tableWidget->setItem(i, NO, new QTableWidgetItem(123456)); //新增行添加數據
			ui.tableWidget->setItem(i, Time, new QTableWidgetItem(4567));
			ui.tableWidget->setItem(i, Value, new QTableWidgetItem(443567));
			ui.tableWidget->setItem(i, Type, new QTableWidgetItem(98665));

五、刪除選中行:

	int rowIndex = ui.tableWidget->currentRow();  //查詢選中行
	if (rowIndex > -1)
	{
		ui.tableWidget->removeRow(rowIndex);  //刪除選中行
	}

六、最后一行新增一行數據:

	int rowcount = ui.tableWidget->rowCount();           //獲取當前行數
	ui.tableWidget->insertRow(rowcount);                 //新增行
	ui.tableWidget->setItem(rowcount, NO, new QTableWidgetItem(newcount)); //新增行添加數據
	ui.tableWidget->setItem(rowcount, Time, new QTableWidgetItem(34566));
	ui.tableWidget->setItem(rowcount, Value, new QTableWidgetItem(54433));
	ui.tableWidget->setItem(rowcount, Type, new QTableWidgetItem(345666543));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM